想象以下场景: 我有一个名为"DoINeedAdmin.exe"的exe文件,并想检查这个程序是否需要管理员权限才能启动它。 尝试启动它并通过一些失败的返回值来确定是否需要管理员权限是可以的。 由于Windows显然可以通过将管理员图标添加到需要提升权限的exe中来实现这一点,我希望在编程上也可以做到这一点。
简而言之,没有确定的方法。如果在程序清单中指定了启动程序,则Windows将以提升权限的方式启动它。如果程序名称包含Setup、Install、Update、Patch(可能还有其他名称),它们也会以提升权限的方式启动(除非这被本地策略或清单文件禁用)。除此之外,应用程序还可以从代码中请求提升权限。你无法在外部程序中检测到这一点。
CreateProcess()
将以ERROR_ELEVATION_REQUIRED
错误代码失败。 - Remy Lebeau