UAC提示触发器列表?

时间:2014-07-03 18:04:37

标签: windows triggers uac heuristics

我刚刚运行了一个我多年前写过的旧程序,比Vista发布前几年。 Windows(7)向我提供了UAC提示并要求获得运行它的权限。我感到很惊讶,因为它是一个相对简单的程序,没有什么太花哨,当然也没有什么需要提升权限。然后我检查了目录,果然,Windows正在覆盖程序上的盾牌图标。

我快速扫描了代码,但没有看到任何明显会触发UAC提示的内容。此外,该程序与我编写的其他几个程序共享一个框架,其中没有一个程序具有UAC要求。有问题的程序以及其他不触发UAC提示的程序都存储在(FAT32)闪存驱动器的同一目录中。

这个程序与其他几乎相同的程序不同的唯一真正独特之处在于它使用ShellExecute来允许用户启动默认的Web浏览器来打开所选的URL,但我无法想象是否/为什么这实际上需要提升权限。

现在我试图找到一些关于Windows使用什么样的启发式方法来确定是否应该使用UAC提示的信息。我知道旧安装程序通常会触发提示符,但这些通常称为setup.exeinstall.exe,而这有一个非常无害的名称(udb.exe)。我怀疑它正在检测某些函数调用或某些函数(当然,这意味着Windows资源管理器会读取和反汇编所有可执行文件,这看起来很可疑)。

我认为会有一些关于此的信息,但我做的研究只发现了一些场外讨论(在上面或右边的“类似问题”列表中没有提及),其中列出了一些原因,这似乎都不适用:

  • 该程序的特定请求(由于它是在UAC存在之前编写的,因此无法实现),
  • 缺乏清单(它确实存在并且无法解释为什么其他程序不会触发它)
  • 文件名/路径的内部列表(此处不适用)
  • 来源(再次,这并不能解释其他程序没问题)
  • 访问受限文件/注册表项(此处不适用)
  • 资源条目(同样,其他程序共享公共资源数据)
  • 其他与系统相关的活动(同样,不适用于该计划)

我最终找到了一些相关的问题,例如one that asked what I am,但结果却产生了完全不同的结果,在这里没有任何帮助,或者另一个问similar, yet opposite question同样没有帮助的结果。不幸的是,我发现的best question是关于安装程序/更新程序(当然,这里不适用),也没有帮助,因为答案与我在其他网站上找到的相同的旧信息一样

是否有人知道UAC触发器列表或其他一些方法来弄清楚为什么Windows认为某些程序需要提升?是否有受限API函数列表?

要明确的是,我试图找出为什么Windows正在为UAC标记一个程序,而不是另一个类似的程序

1 个答案:

答案 0 :(得分:4)

搜索UAC heuristics会产生此博客条目:Identification of Administrative Applications。在那页上:

  

O / S决定应用程序看起来像安装程序或更新程序,并在用户运行时自动调用提升以使用管理权限/特权运行程序。此决定基于启发式方法。以下是一些启发式检测点,尽管此列表并非详尽无遗:

     
      
  • 文件名检测 - 在文件名
  • 中查找“setup”,“update”,“install”字样   
  • SxS Manifest字检测 - 在程序集名称属性程序的SxS Manifest中查找已知值
  •   
  • 字符串表检测 - 在可执行文件的资源部分的字符串表中查找已知值
  •   

因此,Xearinox根本不是正确的,它完全基于权限。

您可以找到程序触发UAC提示的原因之一是使用Process Monitor并检查权限错误。