如何检测可执行文件是否需要UAC提升? 到目前为止,我来到了两种观点:可执行文件的图标 图像识别检查,如果UAC盾牌图标是从维基百科 和信息: http://en.wikipedia.org/wiki/User_Account_Control如何检测可执行文件是否需要UAC提升(C#pref)
有可能以编程方式检测如果可执行文件将需要提升通过使用CreateProcess()并将dwCreationFlags参数设置为CREATE_SUSPENDED。如果需要提升,则会返回ERROR_ELEVATION_REQUIRED。[16]如果不需要提升,那么将返回成功的返回码,在此时您可以在新创建的挂起的进程上使用TerminateProcess()。如果您已经在升级过程中执行,这将不允许您检测到可执行文件需要提升。
感谢
请注意,Windows资源管理器会将屏蔽图标叠加到可执行文件的自身图标上,因此实际上将图标从可执行文件中提取出来并检查它不起作用。 (另外,这可能不是一个好方法......) – cdhowie 2010-11-14 07:05:38
为什么你需要这样做?你能给更多的上下文吗?您通常不需要关心进度是否需要提升,因为操作系统会为您提供帮助。抓住所有的情况也几乎是不可能的。 (例如,进程本身可能在没有UAC的情况下启动,然后根据命令行,在启动过程中手动升高COM对象。如果不编写CPU和Windows仿真器,则无法预知它是否会执行此操作:)。 – 2010-11-14 09:55:27