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

mmi*_*ccc 7 c# uac windows-7

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

有没有办法以编程方式找出指定的应用程序是否需要提升管理员权限?我不想开始发现它.

谢谢 ;).

Chr*_*aas 5

实际上只有一种方法可以告诉Windows程序需要升级,而且需要通过清单文件.清单文件可以嵌入到程序集(exe/dll)中,也可以存在于名为的单独文件中<YOUR_APP>.exe.manifest.这是唯一的方式,可能是您可以安全检查的唯一方式.正式.

Windows还包含一个用于应用程序兼容性的巨型数据库.如果微软已经测试了一个应用程序并发现它在操作系统升级时发生故障,他们有时会在数据库中创建一个条目来基本上破解应用程序.有时候他们会对当前的操作系统版本撒谎,有时他们会自动以管理员身份运行,有时他们会做其他一些事情.您可以使用应用程序兼容性工具包查看数据库.我不知道是否有通过代码查询数据库的官方方法.这篇博客文章讨论了博主所做的一个工具,但显然从未发布过.

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

  • 文件名包括"安装","设置","更新"等关键字.
  • 以下版本控制资源字段中的关键字:供应商,公司名称,产品名称,文件描述,原始文件名,内部名称和导出名称.
  • 嵌入在可执行文件中的并排清单中的关键字.
  • 可执行文件中链接的特定StringTable条目中的关键字.
  • 可执行文件中链接的RC数据中的关键属性.
  • 可执行文件中的目标字节序列.

关键字和字节序列源自各种安装程序技术中观察到的共同特征.

最后,应用程序可以作为普通用户运行,但会生成需要提升权限的子进程.我不知道是否有任何方法可以实际检测到应用程序本身的反编译效果.