返回

如何修改UAC提示中显示的MSI程序名称?

windows

UAC 提示中显示正确的 MSI 程序名称

问题:UAC 提示中 MSI 名称不正确

在安装 Windows MSI 程序时,UAC(用户帐户控制)提示通常会显示类似“403b3.msi”的随机名称,而不是程序的实际名称。这可能会令人困惑,尤其是在安装来自不同来源的多个 MSI 程序时。

解决方案:修改 MSI 文件

要修复这个问题,我们需要修改 MSI 文件中的“ProductName”属性:

  1. 打开 MSI 文件: 使用 MSI 编辑器(如 Orca 或 Visual Studio)打开 MSI 文件。

  2. 找到 ProductName 属性: 在“属性”表中找到“ProductName”属性。

  3. 设置 ProductName: 将“ProductName”属性设置为要显示在 UAC 提示中的程序名称。

  4. 保存并重新编译: 保存更改并重新编译 MSI 文件。

其他注意事项

  • 确保 MSI 文件已正确签名,否则 UAC 提示将继续显示随机程序名称。
  • 如果使用代码签名证书对 MSI 进行签名,请确保已将其添加到受信任的根证书颁发机构列表中。
  • 还可以可以在 UAC 兼容 XML 文件中设置程序名称。

示例代码

以下代码示例演示了如何使用 Orca MSI 编辑器设置“ProductName”属性:

Dim installer As MSIAssembly
Set installer = MSIAssembly.Open("path\to\msi.msi", MSIAssemblyOpenMode.ReadWrite)
Dim table As MSITable
Set table = installer.Tables("Property")
Dim row As MSIPropertyRow
Set row = table.FindRow(Array("Property", "ProductName"))
If Not row Is Nothing Then
    row.Value("Value") = "My MSI Product Name"
End If
installer.Save("path\to\new.msi")

结论

通过修改 MSI 文件中的“ProductName”属性,你可以控制在 UAC 提示中显示的程序名称。这有助于提供更准确和清晰的用户体验。

常见问题解答

1. 为什么 UAC 提示中会出现随机程序名称?

未设置“ProductName”属性时,UAC 提示将显示 MSI 文件的内部名称或哈希。

2. 除了修改 MSI 文件,还有其他方法可以更改 UAC 提示中的程序名称吗?

还可以使用 UAC 兼容 XML 文件来设置程序名称。

3. 我是否必须重新编译 MSI 文件?

是的,修改“ProductName”属性后,需要重新编译 MSI 文件以使其生效。

4. 如何签名 MSI 文件?

可以使用 signtool 实用程序或代码签名证书签名 MSI 文件。

5. 如果我忘记修改 MSI 文件中的“ProductName”属性,会发生什么?

UAC 提示将继续显示 MSI 文件的内部名称或哈希,可能会混淆用户。