3

Windows 8 で ac# .net 3.5 アプリケーションを開発しています。

DPAPI を使用してデータを暗号化する必要があります。System.Security.Cryptography.CryptographicException メッセージ: アクセスが拒否されました。

 byte[] bytes;
 bytes = ProtectedData.Protect(Encoding.UTF8.GetBytes(argsStr.ToString()), null, DataProtectionScope.CurrentUser);

DataProtectionScope.CurrentUser を DataProtectionScope.LocalMachine に変更すると、問題なく動作します。

現在のユーザーが DAPI 暗号化を実行するためのアクセスを誰かが拒否したようです

この問題を解決するにはどうすればよいですか?

失敗するアプリケーションは、現在ログインしているユーザーで実行されているコンソール アプリケーションです。

昇格された権限を使用してアプリケーションを実行すると、アクセスが拒否されて失敗しました。

ログインパスワードをリセットしようとしましたが、問題は解決しました。

どうすればそのようなことが起こりますか?

4

2 に答える 2

2

これは、DPAPI の MasterKey が同期されていないために発生しました。典型的な原因は次のとおりです。

  • パスワードが管理者によって変更されました (古いものを提供せず、ドメイン内ではありません - ネットユーザー管理者パスワード)
  • 第三者認証パッケージ

CryptProtectData(CRYPTPROTECT_CRED_SYNC) を使用して、コードで MasterKey を手動で同期できます。

よろしく、ヴィンセント

于 2013-05-01T07:42:38.777 に答える
2

ユーザーがWindows 7でパスワードを定義していない場合、まったく同じ問題が発生しました。解決策は、ユーザーのパスワードを設定することでした。

于 2016-01-05T12:03:16.713 に答える