我需要使用C#模拟用户。 我使用LogonUser Win32 API。 当模拟与当前登录用户相同的域中的用户时,此方法可以正常工作。 但是,当我尝试模仿来自其他域的用户时,我会收到“假”作为回复。
导致这种情况的原因是什么?
答案 0 :(得分:5)
正如乔尔所说,你需要在域名之间建立信任。
您还需要注意执行委派的进程的安全上下文,以及您运行的计算机所在的域。
您尝试访问的域必须信任该进程的计算机和用户帐户以进行委派。
这意味着您的代码应该在您尝试访问的域上运行。
希望这有帮助
设拉子
答案 1 :(得分:4)
您应该在LogonUser无法查看是否有任何错误信息后立即尝试调用GetLastError。
http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx
从c#调用GetLastError可能存在一些问题 在此处查看有关此内容的更多信息:http://blogs.msdn.com/adam_nathan/archive/2003/04/25/56643.aspx
您的两个域名之间是否存在信任?如果没有,LogonUser将失败。