如何跳过VirtualStore并读取Program Files文件夹中的文件?

Sug*_*rue 8 c# virtualstore windows-10

我在Windows 10 PC上有ac#应用程序.我想要读取的安装文件夹(C:\ Program Files(x86)\ xxx)中有设置文件,但除非用户具有管理员访问权限,否则不进行编辑.问题是Windows正在将这些设置文件复制到VirtualStore并重定向所有读取 - 而管理员运行的同一个应用程序会看到Program Files文件夹中的原始设置文件.

我的问题:有没有办法让应用程序看到程序文件中的原始文件,即使不以管理员身份运行?我只想阅读它们,而不是编辑它们.

Nik*_*ita 7

您不需要提升权限即可从Program Files (x86)文件夹中读取文件.检查如何打开文件进行阅读.您应该FileAccess在通用用户模式和提升模式下指定不同的标志.对于普通用户模式,应使用'FileAccess.Read`打开它:

using (FileStream settingsFile = new FileStream(@"C:\Program Files (x86)\xxx", FileMode.Open, FileAccess.Read))
{
  // Do the job
}
Run Code Online (Sandbox Code Playgroud)

检测应用程序是否使用提升的权限运行使用IsProcessElevated方法.根据结果​​,您可以选择正确的FileAccess模式.