【发布时间】:2011-02-24 08:57:19
【问题描述】:
所以在两台机器之间,没有信任——它们在不同的域中。
我已使用登录类型 LOGON32_LOGON_NEW_CREDENTIALS 使用 LogonUser API 成功连接到远程计算机。我能够使用 UNC 共享检索目录的内容,并创建一个文件流来“下载”该文件。到目前为止一切顺利。
唯一的问题是,除非有一个已经打开的会话,否则 LogonUser 似乎会失败。让我澄清一下。
今天早上我发现 ASP.NET MVC 页面无法正常工作,特别是使用 LogonUser 从该远程计算机检索文件列表的页面。我查看日志并在堆栈跟踪中看到 System.IO.__Error.WinIOError 上面的 Directory.GetFiles 调用。然后,我远程访问 Web 服务器,并尝试使用与网站相同的登录名/密码在资源管理器中打开远程文件夹。它通过了,我可以看到文件。我打开命令提示符,输入net use,我看到远程机器的连接打开了。然后我回到页面,突然页面又开始工作了。
因此,在这一点上,我不确定 LogonUser 是否按预期工作。如果调用需要先通过其他方式打开网络连接,那么这肯定不能令人满意。
有谁知道可能发生的情况或建议解决方法?
【问题讨论】:
-
在 LogonUser 调用之后你是否也在使用 ImpersonateLoggedOnUser?
-
请参阅 [此处][1] 了解可能的解释... [1]:stackoverflow.com/a/7614904/95966
标签: winapi impersonation