1

私は Active Directory Rights Management サービス (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: Microsoft.InformationProtectionAndControl.SafeNativeMethods.ThrowOnErrorCode(Int32 hrError) の 0x80070002 (c:\Microsoft.InformationProtectionAndControl\SafeNativeMethods.cs:行 1678、Microsoft.InformationProtectionAndControl.SafeNativeMethods.IpcGetTemplateList (ConnectionInfo connectionInfo、ブール値の forceDownload、ブール値の suppressUI、ブール値のオフライン、 c:\Microsoft.InformationProtectionAndControl\SafeNativeMethods.cs:c:\IPC.cs の IPC.GetTemplates() の行 137 の Boolean hasUserConsent、Form parentForm、CultureInfo cultureInfo)

また、ビルド後のイベントを設定して、コードがコンパイルされるたびにマニフェスト ファイルが作成されるようにしました。アプリケーションは、Windows サービスでホストされる WCF サービスです。機能する非常に単純なコンソールアプリがあります。

このエラーを解決するための助けと、マネージ コードを使用した AD RMS の例を教えていただければ幸いです :)

4

1 に答える 1

2

この問題に遭遇する可能性のある他の人のために、私は SafeNativeMethods.IpcSetAPIMode(APIMode.Server); を追加することで問題を解決できました。このような私の静的コンストラクターに:

static IPC()
    {
        SafeNativeMethods.IpcInitialize();
        SafeNativeMethods.IpcSetAPIMode(APIMode.Server);
    }
于 2013-08-01T19:47:51.403 に答える