首先是一些背景。我为我的WiX安装程序创建了一个WPF引导程序应用程序,我需要检索并显示默认安装位置。除非我做错了,否则看起来WiX创建的可执行文件总是32位,即使我的Visual Studio配置设置为x64也会导致我的问题。
由于可执行文件始终为32位,因此即使我想安装x64 MSI文件,包含我的WPF引导程序应用程序的库也会加载为32位。因此,当我尝试使用while (true) {
try {
System.gc();
img = r.createScreenCapture(rect);
icon = new javax.swing.ImageIcon(img);
os.writeObject(icon);
os.flush();
icon = null;
System.gc();
try {
Thread.currentThread().sleep(sleepInterval);
} catch (Exception e) {
}
} catch (Exception ex) {
closeAll();
break;
}
}
检索默认安装路径时,我得到 C:\ Program Files(x86)而不是 C:\ Program Files 。在64位操作系统上运行时,如何从32位进程检索 C:\ Program Files ?
我发现了类似的问题,但我没有找到合适的答案,我想要一个即使操作系统语言不是英语也能解决问题的解决方案。我正在考虑删除" (86)"从检索到的路径,但它似乎hacky,我不知道它是否适用于所有情况。
答案 0 :(得分:4)
如果操作系统是64位而您的应用程序是32位,则可以使用环境变量获取 Program Files 文件夹(实际上有一个特殊的 - Environment.SpecialFolder
中不支持 - {{{{} 1}}但这样更容易):
SHGetSpecialFolderLocation
只需检查您的操作系统是64位(在32位系统中,此变量未定义):
Environment.GetEnvironmentVariable("ProgramW6432");