想象一下以下场景:
我在某处有一个exe文件“DoINeedAdmin.exe”,想要检查这个程序是否需要admin-rights来启动它。
尝试启动它并通过一些失败返回值来确定它是可以的。
由于Windows显然可以通过向exe添加admin-icon来实现这一点,如果它需要提升权限,我希望它也可以通过编程方式实现。
答案 0 :(得分:3)
总之,没有确定的方法。
如果在其清单中指定了Windows,则Windows将启动升级程序。如果程序名称包含Setup, Install, Update, Patch(可能更多),它们也将启动它(除非这是disabled by a local policy or a manifest file)。
除此之外,应用程序还可以从代码中请求提升。你无法在外部程序中检测到它。
答案 1 :(得分:3)
shell32(序号865)中有一个未记录的函数,它接受LPCWSTR路径并在路径需要提升时返回非零BOOL。我不知道这个功能是否会检查外部清单。
答案 2 :(得分:2)
简而言之:Application Manifest。这是嵌入到可执行文件中的XML文件,特别感兴趣的是<requestedExecutionLevel level="requireAdministrator" />
tag。