(我怀疑问题不在于我的代码,而在于 Windows 和访问问题,这就是为什么我认为这个问题更适合 SuperUser 而不是 StackOverflow)
我在访问映射文件夹时遇到问题。映射文件夹 (Y:) 是指向本地文件夹 C:\Projects... …\Configuration\Files\ 的链接,包含我们不同环境 (tst、dev 等) 的配置设置。它是使用 subst 命令映射的,作为以管理员身份运行的 bat 脚本。
此文件夹并不总是可见的,如下所示:
文件夹 Y: 在以下情况下可见:
- 我使用资源管理器导航到它(它是计算机下面的一个文件夹)。
- 我使用 Directory.Exists(C# 代码)来查看文件夹是否存在
在下列情况下,文件夹 Y: 不可见:
- 我将 Directory.Exists 代码片段包装在 Impersonation 语句中。该语句模拟我们系统(CRM 系统)的用户。这是访问其他系统(例如 SQL 数据库)所必需的。
我做了什么:
- 我已允许 Everyone 组访问文件夹 Y:。
- 我已关闭用户帐户控制。
- 我已经以管理员身份运行了 bat 脚本和 Visual Studio。
- 我已编辑注册表以启用链接连接,按照以下说明:http://technet.microsoft.com/en-us/library/ee844140%28v=ws.10%29.aspx
上述方法对我都不起作用。我唯一能起作用的是将路径(在我的代码中)从 Y: 更改为明确的 C:\Projects... …\Configuration\Files,但这引发了其他问题,并不是解决问题的合适方法。
我的同事也遇到了这个问题,我们束手无策。你能帮我们吗?
我正在运行 Windows 7 Enterprise,SP1。我在 Visual Studio Ultimate 2012 中编写代码。
答案1
驱动器的映射似乎与执行映射的用户有关。当模拟另一个用户时,映射不再存在。我们解决这个问题的方法是,在模拟之后立即添加一个语句,以再次执行映射(但这次是模拟的用户执行映射)。