0

问题:在 64 位机器的注册表中使用%ProgramFiles(x86)%的 [INSTALLDIR] 是什么?

我有一个程序将安装在 64 位机器的%ProgramFiles(x86)%内。

基本上,我想在注册表中添加这些值

值名称:

(Default)

价值数据:

"C:\Program Files (x86)\MyApp\MyApp.exe"  "%1"

上面的值数据工作得很好,但我不能使用确切的路径,因为 Windows 可能安装在 C:\ 以外的不同目录中

我试过

价值数据:

"[INSTALLDIR]MyApp.exe" "%1"

但它给出了应用程序未找到错误。

我可以使用什么来获取注册表中 %ProgramFiles(x86)% 的路径?任何帮助将不胜感激。

4

4 回答 4

2

可能在这里复制

 static string ProgramFilesx86()
 {
    if( 8 == IntPtr.Size 
        || (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
    {
        return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
    }

    return Environment.GetEnvironmentVariable("ProgramFiles");
 }
于 2013-04-02T15:12:43.080 回答
2

如果您的安装程序标记为x64,您可以使用ProgramFilesFolder安装程序属性:

"[ProgramFilesFolder]MyApp\MyApp.exe" "%1"

x64模式下,此属性将指向x86Program Files 文件夹,而ProgramFiles64Folder将指向x64Program Files 文件夹。

编辑:如果您将reg文件导入注册表而不是让安装程序生成键和值,则可以使用环境变量:

"%ProgramFiles(x86)%\MyApp\MyApp.exe" "%1"
于 2013-04-02T15:18:24.807 回答
0

[INSTALLDIR]包括您的应用程序的名称。所以它转化为

C:\Program Files (x86)\MyApp\MyApp\MyApp.exe在你的例子中。尝试使用

"[INSTALLDIR]MyApp.exe" "%1"
于 2013-04-02T15:12:29.607 回答
0
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
于 2013-04-02T15:28:17.850 回答