【发布时间】:2013-07-25 08:34:33
【问题描述】:
我正在编写一个将在 Windows 7 上运行的软件。我正在列出已安装的服务、获取服务的映像路径位置并检查服务文件是否存在。(Dll 或 Exe)。
我正在使用File.Exist(File_Path) 检查文件位置。对于某些文件,即使文件路径是true,它也会返回false,文件存在并且我有权访问该文件。
我知道即使该文件存在,如果用户无权访问它File.Exist(File_Path) 也会返回 false。
例如,它为文件 C:\Windows\System32\appmgmts.dll 返回 true
但它为文件C:\Windows\System32\audiosrv.dll返回false
当我在 Windows 资源管理器下查看这两个文件的用户权限时,它们完全相同。
但是File.Exist(File_Path) 会为这些文件返回不同的答案。
我正在运行 Visual Studio,并以管理员身份运行 Exe 文件。
对于这种奇怪的行为,请给我一些建议。
【问题讨论】:
-
我建议您在文件上尝试File.ReadAllBytes,然后发布结果
IOException的消息。这可能比 File.Exists 的简单False提供更多信息。 -
猜测:您的应用程序在 64 位系统上以 32 位模式运行。如果是这样,您的程序在 C:\Windows\System32 中看到的内容就是 Windows Explorer 显示为 C:\Windows\SysWOW64 的内容。您可以通过在 C:\Windows\SysWOW64 中查找(或创建)一个在 C:\Windows\System32 中不存在的文件,然后尝试从 C:\Windows 打开它来检查这一点\System32.
-
试试
File.Exists(Path.Combine(Environment.SystemDirectory, "appmgmts.dll")和File.Exists(Path.Combine(Environment.SystemDirectory, "audiosrv.dll") -
@hvd 谢谢,这解决了我的问题
标签: c#