2

我正在为将在受 Windows AppLocker 保护的系统中运行的 C# 软件创建签名安装程序。FqbnAppLocker 规则只允许在其(完全限定的二进制名称)中具有产品名称“MyAppName”的软件自行安装。我购买了证书并使用 Inno Setup 的 signtool 功能签署了应用程序的 exe 和安装程序,效果很好。安装程序和 exe 在其Fqbn.

但!

Fqbn在安装时,安装程​​序会创建一个自身的临时副本,该副本在其字段中不包含产品名称。但是,原始安装程序可以。出版商名称在上述字段 ( "O=My Company, L=My Town, S=My State, C=DE") 中保持不变。

关于如何解决这个问题的任何想法?如何在安装程序的临时副本中获取产品名称?

更新

以下是 AppLocker 在客户 PC 上生成的事件日志。

这是安装程序临时副本的日志(拒绝)。Fqbn 中缺少产品名称(只有三个反斜杠): 这是安装程序临时副本的日志(拒绝)

这是软件二进制文件的日志(允许)。产品名称以及二进制文件的名称都在那里: 这是软件二进制文件的日志(允许)

4

1 回答 1

1

升级到Inno Setup 6.0.4,它会更新内部安装程序二进制文件的产品名称:

安装程序现在支持 Windows AppLocker 发布者条件,包括文件名级别。


旧版本 Inno Setup 的先前答案,包括对问题的解释:

我认为FqbnEXE 中没有任何字段。Fqbn可能只是 AppLocker 从其他真实字段(包括ProductName字段)构造的字符串。我也不认为这个问题与代码签名有任何关系。

此外,AppLocker 阻止的程序不是“自身的临时副本 (=installer)”Setup.e32它是一个完全不同的程序,是Inno Setup 安装文件夹的副本。它没有任何ProductName. Inno Setup 不允许以任何方式自行定制该程序。尽管您应该能够根据需要使用适当的工具(例如Resource Hacker )自己编辑文件。另请参见Setup.tmp 的 Inno Setup 更改任务管理器说明

如果您不想弄乱 Inno Setup 安装,您可以通过“滥用”签名过程来修改 EXE。例如,查看如何editbin在 Microsoft SmartScreen 中用作签名的一部分- 使用 Inno Setup 安装程序暂停?

于 2020-02-12T07:13:02.137 回答