我正在编写一个将在Windows 7上运行的软件。我列出已安装的服务,获取服务图像路径位置并检查是否存在服务文件(Dll或Exe)。C#File.Exist(File_Path)即使File_Path为true,文件也存在,并且我有权访问该文件,但返回false
我正在用File.Exist(File_Path)
检查文件位置。对于某些文件,即使文件路径为true
,文件仍然存在,并且我有权访问该文件,但它返回false
。
我知道,即使该文件存在,如果用户没有访问权限File.Exist(File_Path)
返回false。
例如,对于文件C:\Windows\System32\appmgmts.dll
返回true,但它的文件C:\Windows\System32\audiosrv.dll
返回false当我寻找Windows资源管理器下的这2个文件的用户权限,它们是完全一样的。 但File.Exist(File_Path)
会为这些文件返回不同的答案。
我以管理员身份运行Visual Studio和Exe文件。
请给我一些关于这种奇怪行为的建议。
我建议您在文件上尝试[File.ReadAllBytes](http://msdn.microsoft.com/en-us/library/system.io.file.readallbytes.aspx),然后发布消息导致'IOException'。这可能会给你比File.Exists简单的'False'更多的信息。 – Heinzi
猜测:您的应用程序在64位系统上以32位模式运行。如果是这样,您的程序在C:\ Windows \ System32中看到的是Windows资源管理器显示为C:\ Windows \ SysWOW64的内容。您可以通过在C:\ Windows \ SysWOW64中查找(或创建)C:\ Windows \ System32中不存在的文件,然后尝试从C:\ Windows \ System32中打开它来检查该文件。 – hvd
尝试'File.Exists(Path.Combine(Environment.SystemDirectory,“appmgmts.dll”)''File.Exists(Path.Combine(Environment.SystemDirectory,“audiosrv.dll”)' – Damith