2

.NET 4.5 デスクトップ アプリケーション (wpf) を開発しています。App.config でデータをロード/編集できるカスタム セクションを正常に作成しました。ここで、このセクションを暗号化したいのですが、DPAPI を使用して暗号化することができました。

SectionInformation secInfo = Section.SectionInformation;
if(!secInfo.IsProtected)
{
    secInfo.ProtectionSection("DataProtectionConfigurationProvider");
    secInfo.ForceSave = true;
}

ただし、別のマシンでこの App.config を復号化しようとすると、同じユーザー (アクティブ ディレクトリ) で、これは失敗します。具体的なエラー メッセージは手元にありません。方法がわからない「use machine store」フラグによる失敗であることは明らかなので、まったく必要ないと思います。消す。

次のように、app.config に configProtectedData を追加してみました。

<configuration>
    <configProtectedData>
        <providers>
            <add useMachineProtection="false" keyEntropy="" name="MyUserDataProtectionConfigurationProvider"
            type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration,
            Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </configProtectedData>
</configuration>

私は変わりました secInfo.ProtectionSection("DataProtectionConfigurationProvider");

secInfo.ProtectionSection("MyUserDataProtectionConfigurationProvider");

ただし、「'useMachineProtection' 属性は許可されていません」というインテリセンス エラーが発生します。App.config で、アプリケーションを起動すると System.Windows.Application.ApplicationInit() in System.Windows.Application..ctor() でTypeInitializationExceptionが発生します。カスタム ProtectionProvider でファイルを暗号化するには、コンソール コマンドを実行する必要があることを読みましたが、これらのチュートリアルはすべて ASP.NET に関するものであるため、これが私のニーズに合っているかどうかはわかりません。

私はちょっとここで立ち往生しています。この API は、いつ、どのように復号化するかを気にする必要がないため、ちょっとすっきりしています。セクションから値を読み取るだけで、残りは自動的に行われます。簡単に言えば、DPAPIユーザーストアで暗号化する方法、または不可能な場合:実装が簡単な代替手段は何ですか?

4

0 に答える 0