我和我们公司的 IT 部门花了很多时间才查明这个问题。
该问题仅出现在 Windows Server 2008、Windows 7 和 Windows 8 上。在 Windows XP 或 Windows Server 2003 上我们没有遇到任何问题。
我们公司内部开发了一个程序。该程序运行正常,问题并非出在该程序上。
该程序使用 localhost 与使用 webservices 的计算机上运行的其他程序进行通信。当前的问题是,如果该程序位于用户主文件夹中,则此通信不起作用。
我们花了很多时间才找到原因,最近我们意识到,如果用户可以访问可执行文件的 UNC 路径中的所有父文件夹,那么问题就会消失。
因此,如果主驱动器安装在 H: = \SomeServer\hdrive$\SomeUser 并且用户无权访问 \SomeServer\hdrive$,那么我们的程序将出现 TCP 错误,并且 Web 服务将无法工作。
如果用户仅获得该路径上的“列出文件夹内容”权限,则 Web 服务可以正常工作。
程序运行正常。我们已检查所有 dll 文件均已成功链接,并且没有发生其他错误。
这似乎是操作系统正在做的事情。有人知道为什么会发生这种情况吗?
答案1
在 Windows 7 及更高版本中,某些文件夹默认受到保护。我的理解是,这是出于安全原因。也就是说,这使得程序 A 更难秘密修改程序 B 使用的 dll。
我发现,通常情况下,只要右键单击相关程序,然后以“管理员身份”运行,它就可以正常工作。但我不确定这是否适用于你的情况。