当我像这样使用 WindowsIdentity Impersonation 时:
WindowsIdentity newId = null;
WindowsImpersonationContext impersonatedUser = null;
Console.WriteLine("Name of the identity BEFORE impersonation: "
+ WindowsIdentity.GetCurrent().Name + ".");
newId = new WindowsIdentity(_impersonationToken);
impersonatedUser = newId.Impersonate();
Console.WriteLine("Name of the identity AFTER impersonation: "
+ WindowsIdentity.GetCurrent().Name + ".");
(它被用来将文件从我的计算机复制到 winCE 机器。)
之前的名称和之后的名称保持相同。当我在模拟后查看@ newId 令牌时,它与我用来模拟的令牌不同。我模拟的令牌与我登录的用户肯定不是同一个用户。
有人对它为什么不想使用我的令牌有任何建议吗?(哦,是的,昨天它就像一个魅力:s)
这就是我生成令牌的方式:
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
LogonUser(Username, IPMachine, Password,
LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_DEFAULT,
ref _token);
它给出了一个成功的布尔值,所以我认为我的令牌没有问题