Mor*_*vin 5 .net 64-bit windows-7
所以我正在开发一个简单的.NET程序来进行工作,并且遇到了一些我无法弄清楚的奇怪障碍.该应用程序使用配置文件将应用程序添加到下拉菜单.但是,在将其添加到菜单之前,它会执行system.io.file.exists以验证文件是否存在,至少在创建菜单时是这样.
但是,System.IO.File.Exists(@"C:\ Windows\System32\SnippingTool.exe")返回false,但可执行文件在那里.同样,stikynot.exe也返回false.system32目录中的其他文件返回true(如记事本).我可以filestat这些应用程序,但我的.net程序无法读取它们,system.io.file.exists返回false.我没有运气检查各种权限.它似乎与一些应用程序隔离,但我不确定为什么.
ya2*_*a23 11
这是64位Windows的一个功能.
在x64中,您有两个包含系统文件的文件夹:system32和SysWOW64.
如果你在system32中放置任何东西,它将被所有64位应用程序看到.SysWOW64是出于兼容性原因 - 32位(sic!)应用程序可以看到放在那里的任何内容.
因此就.NET而言,该文件不存在.它适用于记事本,因为notepad.exe存在于这两个目录中.
您可以测试此行为.在其中一个目录中创建一个文本文件,而不是另一个目录,并检查它是否存在.然后在x86和x64之间更改项目配置(右键单击解决方案 - > Configuration Manager)并享受结果.