我不确定我的确切问题,但情况如下:
我有一个我在Visual Studio 2012中开发的应用程序(WinForms,C#.Net)。它做了很多事情,但重要的是它需要从某个位置读取文件。
在这种情况下,文件的位置在服务器上,我的机器具有用于访问文件的映射网络驱动器设置。我可以使用Windows资源管理器手动导航到文件。
我的代码中有以下行突出显示了该问题:
System.IO.File.Exists("X:\\A Folder\\a_file.txt");
该文件确实存在于该位置。然而,这就是出现问题的地方:如果我构建解决方案并直接从" bin"运行.exe;文件夹(双击)。代码很好,它找到了文件。但是,如果我使用visual studio运行它,那么我会得到一个未找到的文件"异常。
我认为Visual Studio正在"管理员"中运行。模式(我忘记了为什么我需要这个,但我这样做)。现在,如果您认为管理员"帐户没有" X:\"驱动映射。但是,在我上周升级到Windows 10之前,这一直不是问题。
所以我的问题是:
Visual Studio Administrator模式在Windows 10中的工作方式是否有所不同?在这种情况下,它是否以不同方式处理映射的网络驱动器?
值得注意的是我从Windows 7升级了,所以我无法确认此问题是否也出现在8和8.1中。
在有人要求之前,我们只是说它已经成为映射驱动器。不允许UNC路径!
答案 0 :(得分:6)
所以我找到了解决方案/解决方法。现在看起来好像是浪费的赏金,所以如果有人有更好的其他建议那么请发帖,我会审查他们并奖励适用。或者即使有人可以制作更详细的解决方案版本,我也会奖励那个解决方案。
问题可能不是特定于Visual Studio,但是对于使用提升权限运行的任何应用程序都会发生。无论如何,我找到的解决方案是添加一个注册表项,使管理员模式下运行时可以访问相同的共享驱动器。
注册表项位置是:
HKEY_LOCAL_MACHINE /软件/微软/视窗/ CURRENTVERSION /策略/系统
添加的关键是:
EnableLinkedConnections
应创建为DWORD
,其值为1
(0x00000001
)
我检查了运行Windows 7的计算机,但他们没有这个密钥,但它们仍能正常工作。因此,我认为这不是唯一的解决方案,但它似乎确实有效(尚未注明副作用)。我假设Windows 10在某处具有特定设置,默认情况下会阻止映射驱动器自动与#34;以管理员身份运行"。
作为参考,我找到了this information here。
事实上,here is a more "official" recommendation使用此注册表项。
答案 1 :(得分:2)
这不太可能与Windows 10有关,只是与您的机器配置有关。您所描述的内容是正常的,并由this KB article涵盖。我无法检查自己,所以只需尝试推荐的解决方法,必要时在superuser.com上进行跟进。
答案 2 :(得分:0)
可能正在运行不同的用户/系统任务。因此,您已映射X驱动器,但其他人没有。您也可以在Windows安装上的其他用户上执行驱动器映射。正如您所说,这不应该是Windows 10唯一的问题,而是Windows 7+和提升的权限。
也许您可以为X:路径使用已配置的参数并在运行时加载,或者甚至尝试使用UNC路径,这些路径将在运行时解析而不需要映射驱动器。
\\ServerNameOrIP\A Folder\a_file.txt.
在代码中,您需要:
System.IO.File.Exists("\\\\ServerName\\A Folder\\a_file.txt");