以下代码不起作用:
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 说
“如果您在模拟期间使用此方法,您可能会收到以下错误:“密钥在指定状态下无效。”可以通过在调用该方法之前加载您要模拟的用户的配置文件来防止此错误。