AD RMS托管代码错误系统找不到指定的文件。 HRESULT:0x80070002

时间:2013-07-25 13:10:23

标签: active-directory rights-management

我是Active Directory权限管理服务(AD RMS)的新手,我正在开发一个使用AD RMS加密某些文档的应用程序。我使用了互操作示例,我收到错误 - 系统找不到指定的文件。 HRESULT:0x80070002 - 当我尝试运行以下代码时:

当我尝试运行此语句时出现错误:

收集ipcTemplates = IPC.GetTemplates();

internal static class IPC
{
     static IPC()
     {
          SafeNativeMethods.IpcInitialize();
     }

     public static Collection<TemplateInfo> GetTemplates()
     {
          Collection<TemplateInfo> templates = null;

          try
          {
               templates = SafeNativeMethods.IpcGetTemplateList(null, true, true,
                                false, false, null, null);
          }
          catch (Exception /*ex*/)
          {
              /* TODO: Add logging */
              throw; 
          }

          return templates;
     }
}

堆栈追踪:

系统找不到指定的文件。 HRESULT:0x80070002    at c:\ Microsoft.InformationProtectionAndControl \ SafeNativeMethods.cs中的Microsoft.InformationProtectionAndControl.SafeNativeMethods.ThrowOnErrorCode(Int32 hrError):第1678行    在Microsoft.InformationProtectionAndControl.SafeNativeMethods.IpcGetTemplateList(ConnectionInfo connectionInfo,Boolean forceDownload,Boolean suppressUI,Boolean offline,Boolean hasUserConsent,Form parentForm,CultureInfo cultureInfo)中的c:\ Microsoft.InformationProtectionAndControl \ SafeNativeMethods.cs:第137行    在c:\ IPC.cs

中的IPC.GetTemplates()

此外,我已经设置了一个post build事件,以确保每次编译代码时都会创建清单文件。该应用程序是一个托管在Windows服务中的WCF服务。我有一个非常简单的控制台应用程序。

任何使用托管代码解决此错误和任何AD RMS示例的帮助都将受到赞赏:)

1 个答案:

答案 0 :(得分:2)

对于可能遇到此问题的任何其他人,我可以通过添加SafeNativeMethods.IpcSetAPIMode(APIMode.Server)解决我的问题;我的静态构造函数如下:

static IPC()
    {
        SafeNativeMethods.IpcInitialize();
        SafeNativeMethods.IpcSetAPIMode(APIMode.Server);
    }