了解应用程序是否需要管理员权限

本文关键字:管理员 权限 应用程序 是否 了解 | 更新日期: 2023-09-27 18:10:48

Windows 7使用一种自动机制来检测应用程序是否需要提升管理员权限。或者应用程序本身有一个清单。

是否有一种方法可以通过编程方式找出指定的应用程序是否需要提升管理员权限?我不想为了找出答案而开始。

了解应用程序是否需要管理员权限

告诉Windows程序需要提升的方法只有一种,那就是通过manifest文件。清单文件可以嵌入在程序集(exe/dll)中,也可以驻留在名为<YOUR_APP>.exe.manifest的单独文件中。这是唯一的方法,也可能是唯一可以安全检查的方法。正式.

Windows还包含一个用于应用程序兼容性的大型数据库。如果微软测试了一个应用程序,发现它在操作系统升级时崩溃了,他们有时会在数据库中创建一个条目,从本质上破解这个应用程序。有时他们会对当前的操作系统版本撒谎,有时他们会自动以管理员身份运行,有时他们会做一堆其他事情。您可以使用应用程序兼容性工具包查看数据库。我不知道是否有通过代码查询数据库的正式方法。这篇博文谈论的是一个博主制作但显然从未发布的工具。

最后一个自动提升机制是一个算法,它试图确定该应用程序是否是一个安装程序。根据MSDN检查这些属性:

  • 文件名包含关键字,如"install","setup","update"等
  • 版本控制资源字段中的关键字:供应商、公司名称、产品名称、文件描述、原始文件名、
  • 内部名称和导出名称。
  • 在可执行文件中嵌入的并列清单中的关键字。
  • 可执行文件中链接的特定StringTable项中的关键字。
  • 在可执行文件中链接的RC数据中的关键属性。
  • 可执行文件中的目标字节序列。

关键字和字节序列来源于common从各种安装程序技术观察到的特征。

最后,一个应用程序可以作为一个普通用户运行,但会产生一个需要更高权限的子进程。我不知道是否真的有任何方法可以检测到,除了反编译应用程序本身。