如何檢測可執行文件是否需要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