Windows 7使用自动机制来检测应用程序是否需要提升的管理员权限。或者应用程序本身有一个清单。
有没有办法以编程方式查找指定的应用程序是否需要提升的管理员权限? 我不想开始发现它。
谢谢;)。
答案 0 :(得分:5)
实际上只有一种方法可以告诉Windows一个程序需要升级,而且需要通过清单文件。清单文件可以嵌入到程序集(exe / dll)中,也可以存在于名为<YOUR_APP>.exe.manifest
的单独文件中。这是唯一的方式,可能是您可以安全检查的唯一方式。正式。
Windows还包含一个用于应用程序兼容性的巨型数据库。如果微软已经测试了一个应用程序并发现它在操作系统升级时发生故障,他们有时会在数据库中创建一个条目来基本上破解应用程序。有时候他们会对当前的操作系统版本撒谎,有时他们会自动以管理员身份运行,有时他们会做其他一些事情。您可以使用Application Compatibility Toolkit查看数据库。我不知道是否有通过代码查询数据库的官方方法。 This blog post讨论了博主所做的工具,但显然从未发布过。
最后一个自动提升机制是尝试确定该应用程序是否为安装程序的算法。检查According to MSDN这些属性:
- 文件名包括“安装”,“设置”,“更新”等关键字
- 以下版本控制资源字段中的关键字:供应商,公司名称,产品名称,文件描述,原始文件名, 内部名称和导出名称。
- 可执行文件中嵌入的并排清单中的关键字。
- 可执行文件中链接的特定StringTable条目中的关键字。
- 可执行文件中链接的RC数据中的关键属性。
- 可执行文件中的目标字节序列。
关键字和字节序列源自common 从各种安装技术中观察到的特征。
最后,应用可以作为普通用户运行spawn a child process that requires elevated privileges。我不知道是否有任何方法可以实际检测到应用程序本身的反编译效果。