C#-如何在Windows 64位上获取程序文件(x86)
本文关键字:文件 程序 x86 获取 Windows 64位 C#- | 更新日期: 2023-09-27 17:48:48
我使用的是:
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"'MyInstalledApp"
为了确定是否在用户机器上检测到程序(这并不理想,但我要找的程序是MS-DOS应用程序的旧版本,我想不出其他方法)。
在Windows XP和32位版本的Windows Vista上,此操作效果良好。但是,在x64 Windows Vista上,代码返回x64 Program Files文件夹,而应用程序安装在Program Files x86中。有没有一种方法可以在不使用硬接线"C:''Program Files(x86)"的情况下以编程方式返回到Program Files x86的路径?
下面的函数将在所有这三种Windows配置中返回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)
环境变量只有在应用程序运行64位时才可用。
如果您的应用程序运行的是32位,您只需使用ProgramFiles
环境变量,其值实际上是"Program Files(x86)"。
一种方法是查找"ProgramFiles(x86)"环境变量:
String x86folder = Environment.GetEnvironmentVariable("ProgramFiles(x86)");
我正在编写一个可以在x86和x64平台上运行的应用程序;7,查询下面的变量只需在任何平台上提取正确的程序文件文件夹路径。
Environment.GetEnvironmentVariable("PROGRAMFILES")
在.NET中使用新方法的一个线性程序。将始终返回x86程序文件文件夹。
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))
C#代码:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
输出:
C:''Program Files(x86)
注意:
我们需要告诉编译器不要选择特定的构建平台。
Go to Visual Studio > Project Properties > Build > Uncheck "Prefer 32 bit"
原因:
默认情况下,对于大多数.NET项目;任何CPU 32位优选的";
当您取消选中32位程序集时,将:
32位进程上的JIT到32位代码
64位进程上的JIT到32位代码