Visual Studio Windows 10 中的管理员模式

Visual Studio Administrator mode in Windows 10

不太确定我的确切问题,但情况是这样的:

我在 Visual Studio 2012 年开发了一个应用程序(WinForms、C# .Net)。它做了很多事情,但重要的一点是它需要从某个位置读取文件。

在这种情况下,文件的位置在服务器上,并且我的机器具有用于访问文件的映射网络驱动器设置。我可以使用 Windows Explorer 手动导航到文件。

我的代码中有以下行突出了这个问题:

System.IO.File.Exists("X:\A Folder\a_file.txt");

并且该文件确实存在于该位置。然而,这就是问题所在:如果我直接从 "bin" 文件夹(双击)构建解决方案和 运行 .exe。代码没问题,它找到了文件。但是如果我 运行 它与 visual studio 然后我得到一个 "file not found" 异常。

我把这归结为 Visual Studio 在 "Administrator" 模式下 运行ning(我忘了为什么我需要这个,但我确实需要)。现在,如果您认为 "administrator" 帐户没有映射 "X:\" 驱动器,那么这就有意义了。然而,这一直不是问题,直到我上周升级到 Windows 10。

所以我的问题是

Visual Studio 管理员模式在 Windows 10 中的工作方式是否不同?在这种情况下,它是否以不同方式处理映射的网络驱动器?

值得注意的是,我是从 Windows 7 升级的,所以我无法确认这个问题是否也出现在 8 和 8.1 中。

在有人问之前,我们就说它必须 是一个映射驱动器。不允许使用 UNC 路径!

这不太可能与Windows10有任何关系,只是与您的机器配置有关。你描述的是正常的,被this KB article覆盖了。没有什么我可以自己检查的,所以只需尝试推荐的解决方法,如有必要,请在 superuser.com 跟进。

所以我找到了 solution/workaround。现在有点像是浪费了赏金,所以如果有人有其他更好的建议,请 post 我会审查它们并在适用时给予奖励。或者即使有人可以为我的解决方案制作更详细的版本,我也会奖励那个。


该问题可能并非特定于 Visual Studio,但任何应用程序 运行 提升的权限都会发生。无论如何,我找到的解决方案是添加一个注册表项,使在管理员模式下 运行 时可以访问相同的共享驱动器。

注册表项位置是:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

而要添加的键名为:

EnableLinkedConnections

并且应创建为 DWORD,值为 1 (0x00000001)

我检查了机器 运行 Windows 7,他们没有这个密钥,但他们仍然可以正常工作。所以我希望这不是唯一的解决方案,但它似乎确实有效(尚未注意到副作用)。我会假设 Windows 10 在某处有一个特定的设置,默认情况下会阻止映射的驱动器自动与 "run as administrator".

一起使用

作为参考,我找到了 this information here

事实上,here is a more "official" recommendation 使用此注册码。

不同的 users/system 任务可能 运行。因此,您映射了 X 驱动器,但其他人没有。您也可以在 Windows 安装上对其他用户进行驱动器映射。正如您所说,这不应该是 Windows 10 的唯一问题,而是 Windows 7+ 和提升的权限。

也许您可以为 X: 路径使用配置的参数并在运行时加载,或者甚至尝试使用将在运行时解析且不需要映射驱动器的 UNC 路径。

\ServerNameOrIP\A Folder\a_file.txt.

在代码中,您需要:

System.IO.File.Exists("\\ServerName\A Folder\a_file.txt");