【发布时间】:2010-11-02 20:47:20
【问题描述】:
我需要使用 C# 模拟用户。 我使用 LogonUser Win32 API。 当模拟与当前登录用户来自同一域的用户时,这可以正常工作。 但是,当我尝试模拟来自其他域的用户时,我得到“错误”作为响应。
这是什么原因造成的?
【问题讨论】:
标签: c# winapi impersonation
我需要使用 C# 模拟用户。 我使用 LogonUser Win32 API。 当模拟与当前登录用户来自同一域的用户时,这可以正常工作。 但是,当我尝试模拟来自其他域的用户时,我得到“错误”作为响应。
这是什么原因造成的?
【问题讨论】:
标签: c# winapi impersonation
正如 Joel 所说,您需要域之间的信任。
您还需要注意执行委托的进程的安全上下文,以及您运行的机器所在的域。
您尝试访问的域必须信任进程的计算机和用户帐户才能进行委派。
这意味着您的代码应该在您尝试访问的域上运行。
希望对你有帮助
设拉子
【讨论】:
您应该在 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 将失败。
【讨论】: