.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ユーザーストアで暗号化する方法、または不可能な場合:実装が簡単な代替手段は何ですか?