Windows UAC对话框

7
我有一个没有任何资源(包括UAC清单)的应用程序。此应用程序使用CopyFile将自己安装到appdata/roaming文件夹中,并设置了自启动,以便在每次启动时自动启动。现在,每次启动电脑时,UAC对话框会弹出并表示该应用程序会更改计算机。如果应用程序位于appdata中,则图标上也会显示盾牌符号。如何删除对话框或图标上的盾牌?Windows是否会检测copyfile API并自动设置?感谢您的回答。

4
那个可执行文件的名称里没有包含 "setup" 这个词,对吗?我知道这会自动触发用户账户控制提示。 - 0xFE
2
@user141603:您所指的是UAC的“安装程序检测”功能。 “setup”只是它寻找的众多关键字之一,文件名只是寻找关键字的众多位置之一。有关更多详细信息,请参阅MSDN(http://msdn.microsoft.com/en-us/library/windows/desktop/bb756960.aspx)。 - Remy Lebeau
太令人印象深刻了。我真的不知道UAC可以被它的文件名触发。谢谢 :) - Ben
这看起来很像https://dev59.com/E3RB5IYBdhLWcg3wuZfo#1016151的重复。 - SamB
1个回答

9

避免这种情况的最佳方法是添加应用程序清单:它明确向系统传达了这不是传统应用程序,也不应该应用安装检测逻辑(可能会出现误报)。

此外,您的应用程序应该拥有一个版本信息资源,其中包含文件的版本和描述。

如果您的应用程序没有清单,系统将使用启发式方法来检测它是否是安装程序。如果它认为应用程序是安装程序,则运行您的应用程序将需要提升权限,并且该应用程序将在其图标和可执行文件上显示盾牌。

安装程序检测技术摘自:

  • 文件名包括关键字,如“install”、“setup”或“update”。
  • 版本资源字段包含以下关键字:供应商、公司名称、产品名称、文件说明、原始文件名、内部名称和导出名称。

就是这样。应用程序的名称实际上是“update”!不知道UAC会因文件名而触发。谢谢! - Ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接