具有特定名称的launch4j可执行文件触发Windows UAC

时间:2012-02-08 09:53:14

标签: windows-7 ant windows-vista uac launch4j

我正在创建一个我的java程序的Windows可执行EXE文件,其中包含一个在Eclipse中运行的initT的ANT任务,并将其命名为“MyApp.exe”。我需要这个程序在Windows系统上运行而无需管理员身份验证。 到目前为止,这是有效的。它运行正常,没有任何UAC提示。

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

same program, renamed via windows explorer

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

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

2 个答案:

答案 0 :(得分:3)

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

@eee将此作为评论:

MSDN:

  

图标叠加:在Windows Vista中,如果需要可执行文件   要启动的高程,那么可执行文件的图标应该“盖章”   带有盾牌图标来表明这一事实。 ......盾牌图标叠加   也会自动放在被认为可执行的文件上   根据安装程序检测启发式要求提升。对于   例如,名为setup.exe的文件将自动收到屏蔽   即使可执行文件没有嵌入式,也会覆盖图标   申请清单。

     

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

答案 1 :(得分:1)

此行为由组策略控制。

如果User Account Control: Detect application installations and prompt for elevation设置为已禁用,则这些文件名将不再是特殊的。

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