C# – 如何获得Windows 64位上的程序文件(x86)
我在用着:
FileInfo( System.Environment.GetFolderPath( System.Environment.SpecialFolder.ProgramFiles) + @"\MyInstalledApp"
为了确定一个程序是否在用户机器上被检测到(这不是理想的,但我正在寻找的程序是一个MS-DOS应用程序的一个正确的旧kludge,我想不出另一种方法)。
在Windows XP和32位版本的Windows Vista上,这工作正常。 但是,在x64 Windows Vista上,代码将返回x64 Program Files文件夹,而应用程序则安装在Program Files x86中。 有没有一种方法编程方式返回path程序文件x86没有硬接线“C:\ Program Files文件(x86)”?
下面的函数将返回所有这三种Windowsconfiguration中的x86 Program Files
目录:
- 32位Windows
- 在64位Windows上运行的32位程序
- 在64位窗口上运行的64位程序
static string ProgramFilesx86() { if( 8 == IntPtr.Size || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432")))) { return Environment.GetEnvironmentVariable("ProgramFiles(x86)"); } return Environment.GetEnvironmentVariable("ProgramFiles"); }
如果您使用.NET 4,则有一个特殊的文件夹枚举ProgramFilesX86 :
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
但请注意, ProgramFiles(x86)
环境variables仅在您的应用程序运行64位时才可用。
如果您的应用程序正在运行32位,则可以使用ProgramFiles
环境variables,其值实际上是“Program Files(x86)”。
一种方法是查找“ProgramFiles(x86)”环境variables:
String x86folder = Environment.GetEnvironmentVariable("ProgramFiles(x86)");
我正在编写一个应用程序,可以在Windows 7的x86和x64平台上运行,查询下面的variables只需在任何平台上拖动正确的程序文件文件夹path。
Environment.GetEnvironmentVariable("PROGRAMFILES")