从32位进程检索x64 Program Files路径

时间:2015-05-25 14:05:51

标签: c# wix 64-bit

首先是一些背景。我为我的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,我不知道它是否适用于所有情况。

1 个答案:

答案 0 :(得分:4)

如果操作系统是64位而您的应用程序是32位,则可以使用环境变量获取 Program Files 文件夹(实际上有一个特殊的 - Environment.SpecialFolder中不支持 - {{{{} 1}}但这样更容易):

SHGetSpecialFolderLocation

只需检查您的操作系统是64位(在32位系统中,此变量未定义):

Environment.GetEnvironmentVariable("ProgramW6432");