C#File.Exist(File_Path)返回false,即使File_Path为true、File存在并且我有权访问该文件

C#File.Exist(File_Path)返回false,即使File_Path为true、File存在并且我有权访问该文件,c#,C#,我正在写一个在Windows7上运行的软件。我列出已安装的服务,获取服务的映像路径位置,并检查服务文件是否存在。(Dll或Exe) 我正在使用file.Exist(文件路径)检查文件位置。对于某些文件,即使文件路径为true,它也会返回false,文件存在并且我有权访问该文件 我知道即使该文件存在,如果用户没有访问该文件的权限file.Exist(file\u Path)返回false 例如,对于文件C:\Windows\System32\appmgmts.dll 但是对于文件C:\Window

我正在写一个在Windows7上运行的软件。我列出已安装的服务,获取服务的映像路径位置,并检查服务文件是否存在。(Dll或Exe)

我正在使用
file.Exist(文件路径)
检查文件位置。对于某些文件,即使文件路径为
true
,它也会返回
false
,文件存在并且我有权访问该文件

我知道即使该文件存在,如果用户没有访问该文件的权限
file.Exist(file\u Path)
返回false

例如,对于文件
C:\Windows\System32\appmgmts.dll
但是对于文件
C:\Windows\System32\audiosrv.dll

当我在Windows资源管理器下查看这两个文件的用户权限时,它们完全相同。 但是
File.Exist(文件路径)
为这些文件返回不同的答案

我以管理员身份运行Visual Studio和Exe文件


对于这种奇怪的行为,请给我一些建议

当我导出文件。存在于x86配置中时,我有相同的结果,但当我在64中时,这两个文件返回true,我在网上找到了该文件。存在于您的案例中在SysWOW64中搜索,请检查此问题以了解更多信息:

当我导出文件。存在于x86配置中时,我有相同的结果,但当我在64时,这两个文件返回true,我在网上找到了该文件。存在于SysWOW64中的案例搜索中,请检查此问题以了解更多信息:

我修复了在使用域凭据创建的映射上检查文件时发生的类似问题。我作为管理员调试VS。我能够通过Windows资源管理器导航到该文件,但不能使用VS


当我关闭VS Admin模式并重新正常启动时,我解决了这个问题。

我修复了在使用域凭据创建的映射上检查文件时出现的类似问题。我作为管理员调试VS。我能够通过Windows资源管理器导航到该文件,但不能使用VS


当我关闭VS Admin模式并重新正常启动时,我解决了这个问题。

我建议您尝试该文件,然后发布生成的
IOException
消息。这可能比File.Exists的简单
False
提供更多信息。猜测:您的应用程序正在64位系统上以32位模式运行。如果是这样,您的程序在C:\Windows\System32中看到的是Windows资源管理器显示为C:\Windows\SysWOW64的内容。您可以通过在C:\Windows\SysWOW64中查找(或创建)C:\Windows\System32中不存在的文件,然后尝试从C:\Windows\System32.try
file.Exists(Path.Combine(Environment.SystemDirectory,“appmgmts.dll”)
file.Exists(Path.Combine(Environment.SystemDirectory,“audiosrv.dll”)打开它来检查这一点
@hvd谢谢,这解决了我的问题。我建议您尝试一下该文件,然后发布生成的
IOException
的消息。这可能比file.Exists的简单
False
提供更多信息。猜测:您的应用程序在64位系统上以32位模式运行。如果是,您的程序在C:\Window中看到了什么s\System32是Windows资源管理器显示为C:\Windows\SysWOW64的。您可以通过在C:\Windows\SysWOW64中查找(或创建)C:\Windows\System32中不存在的文件,然后尝试从C:\Windows\System32.try
file.Exists(Path.Combine(Environment.SystemDirectory,“appmgmts.dll”)打开它来检查此问题
文件.Exists(Path.Combine(Environment.SystemDirectory,“audiosrv.dll”)
@hvd谢谢,这解决了我的问题