1

我正在用 Eclipse 中的 launch4j ANT 任务创建我的 java 程序的 Windows 可执行 EXE 文件,并将其命名为“MyApp.exe”。我需要这个程序在没有管理员身份验证的情况下在 Windows 系统上运行。到目前为止,这行得通。它运行良好,没有任何 UAC 提示。

但是:如果我在我的 launch4j ANT 任务中将此 EXE 重命名为“install.exe”、“setup.exe”或“updater.exe”,则会出现 UAC 图标(右下角覆盖程序图标)并且当我收到 UAC 提示时启动程序(仅在 Windows Vista 或 7 上)。如果我在 Windows 资源管理器中重命名程序,也会发生这种情况。

相同的程序,通过 Windows 资源管理器重命名

似乎文件名中有一些“保留字”会导致 Windows 以提升的访问权限 (UAC) 启动程序。

有人可以确认这个问题吗?我真的不能将我的应用程序命名为“install.exe”或“update.exe”吗?

4

2 回答 2

4

是的,文件名中有保留字会触发 UAC。

@eee 将此作为评论发布:

MSDN:

图标覆盖:在 Windows Vista 中,如果可执行文件需要提升才能启动,则可执行文件的图标应该用盾牌图标“标记”以表明这一事实。...盾牌图标覆盖也将自动放置在根据安装程序检测启发式被认为需要提升的可执行文件上。例如,即使可执行文件没有嵌入式应用程序清单,名为 setup.exe 的文件也会自动接收盾牌图标覆盖。

http://msdn.microsoft.com/en-us/library/bb530410.aspx

于 2013-01-06T19:00:35.977 回答
1

此行为由组策略控制。

如果用户帐户控制:检测应用程序安装并提示提升设置为禁用,则这些文件名将不再是特殊的。

当然,如果您要命名文件以在不受您控制的计算机上使用,您仍然应该远离公认的名称。

于 2013-11-23T20:06:27.417 回答