次のコードは機能しません。
IntPtr token = Win32Dll.LogonUser(“user1”, “mydomain”, “password1”);
WindowsIdentity id = new WindowsIdentity(token);
WindowsImpersonationContext ic = id.Impersonate();
byte[] unprotectedBytes = ProtectedData.Unprotect(passwordBytes, null, DataProtectionScope.CurrentUser);
password = Encoding.Unicode.GetString(unprotectedBytes);
ic.Undo();
パスワードは復号化されません。
MSDNによると
「偽装中にこのメソッドを使用すると、次のエラーが表示される場合があります:「キーは指定された状態での使用には無効です。このエラーは、メソッドを呼び出す前に、偽装するユーザーのプロファイルを読み込むことで防ぐことができます。」