Environment.SpecialFolder.ProgramFiles返回错误的目录

本文关键字:错误 返回 SpecialFolder ProgramFiles Environment | 更新日期: 2023-09-27 18:00:08

我正在进行一个C#项目,我正在使用以下代码:

string rootPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);

但是,当我查看rootPath时,它被设置为C:''Program Files(x86)。

为什么要这样做,因为有一个Environment.SpecialFolder.ProgramFilesX86,我本以为会返回上面的。

Environment.SpecialFolder.ProgramFiles返回错误的目录

如果您的项目当前以x86平台为目标,那么这两个枚举值都将返回Program Files(x86)目录。

将项目的目标平台更改为x64SpecialFolder.ProgramFiles应该返回Program Files目录。

我有一个场景,我无法更改执行程序集的目标。所以我使用这个方法来获得x64(也在32位运行时):

var programFilesX64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)
.OpenSubKey(@"SOFTWARE'Microsoft'Windows'CurrentVersion")?.GetValue("ProgramFilesDir");