我是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示例的帮助都将受到赞赏:)
答案 0 :(得分:2)
对于可能遇到此问题的任何其他人,我可以通过添加SafeNativeMethods.IpcSetAPIMode(APIMode.Server)解决我的问题;我的静态构造函数如下:
static IPC()
{
SafeNativeMethods.IpcInitialize();
SafeNativeMethods.IpcSetAPIMode(APIMode.Server);
}