3

我正在尝试使用 DirectoryEntry 对象连接到远程 Windows 7 机器。这是我的代码

DirectoryEntry obDirEntry = new DirectoryEntry("WinNT://hostName", "hostName\\testUser", "password123", AuthenticationTypes.Secure);               
            try
            {
                if (obDirEntry.Properties.Count > 0)
                {                        
                   //ok
                }
            }
            catch (Exception excp)
            {}

如果我能够连接到远程 windows server 2003 机器或本地 windows 7 机器,那么我没有收到任何错误。但是,当我尝试连接到远程 Windows 7 机器时,我在线上遇到异常if (obDirEntry.Properties.Count > 0)

 Exception :System.IO.FileNotFoundException: The network path was not found.

 at System.DirectoryServices.Interop.UnsafeNativeMethods.IAds.GetInfo()
 at System.DirectoryServices.DirectoryEntry.RefreshCache()
 at System.DirectoryServices.DirectoryEntry.FillCache(String propertyName)
 at System.DirectoryServices.PropertyCollection.get_Count()

我能够 ping 那个远程 windows 7 m/c。防火墙和 UAC 也关闭了。问题是我在每台远程 Windows 7 机器上都遇到了这个问题。我试图将 ip 地址放在 url 而不是主机名中,但在这种情况下,即使在本地机器上我也会遇到异常。nslookup 命令能够解析远程 m/c 主机名。这可能是什么原因?有什么可能的解决方案?提前致谢 !!

4

2 回答 2

2

您需要正确访问远程注册表才能以这种方式连接到 Windows 7 (&8) 系统。

这里有关于如何成功连接到远程注册表的指南。它收集所需的所有不同信息 - 启用文件和打印机共享、启用远程注册表服务以及将连接到远程注册表的特定用户添加到HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg.

在远程系统上执行所有这些任务后,您应该能够使用WinRT://remoteHost. 我在我拥有的一些系统上对其进行了测试,并且可以正常工作。

如果系统是域绑定系统并且用于连接的帐户是域管理员帐户,这可能会自动运行。

于 2012-12-19T19:06:54.580 回答
2

我最近在一些已建立的内部网站上遇到了这个问题。

我发现应该修复的一个项目是 Microsoft 修补程序:http: //support.microsoft.com/kb/2545850。您可以判断这是否是您的问题,因为服务器重新启动将暂时纠正错误。

However in my case this did not work. Checking settings in IIS I noticed that under my sites' "Authentication" section, ASP.NET Impersonation was enabled (it was being set to "true" in the web.config). I disabled it and that resolved the issue for me.

于 2015-02-23T19:17:32.640 回答