找出应用程序是否需要管理员权限

问题描述:

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

有没有一种方法来找出程序化指定的应用程序是否需要提升管理员权限? 我不想开始找出它。

谢谢;)。

+1

请勿将您的标题添加为“C#”。在[so]上,这就是我们使用标签的原因。 –

+2

好的,谢谢你的纠正。我会在进一步的问题中记住这一点;) – mmiccc

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

Windows还包含一个用于应用程序兼容性的巨大数据库。如果微软已经测试了一个应用程序,并发现它在操作系统升级发生时中断,他们有时会在数据库中创建一个条目来实质上破解该应用程序。有时候他们会说当前的操作系统版本,有时候他们会自动以管理员身份运行,有时他们会做很多其他的事情。您可以使用Application Compatibility Toolkit查看数据库。我不知道是否有官方的方式来通过代码查询数据库。 This blog post谈论了一个博客作出的工具,但显然从未发布。

最后一个自动提升机制是试图确定该应用是否为安装程序的算法。 According to MSDN这些属性进行检查:

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

关键字和字节序列是从各种安装程序技术观察到的常见特征导出的。

最后,应用程序可以作为普通用户运行,但是可以运行spawn a child process that requires elevated privileges。我不知道是否真的有办法实际检测到反编译应用程序本身的缺点。

+0

我想首先感谢你为这个漫长而详细的答案! 好吧,我要实现上述算法并查找清单文件。它似乎涵盖了许多情况。 非常感谢:) – mmiccc