如果我們自己的程式要送訊息到高權級的程式, 除了透過 UAC 提升權級外, 還有一個辦法, 就是 Bypass UI Protection, 但需滿足三個條件, 缺一不可.
- 在 VS 專案中, 設定 Linker / Manifest File / UAC Bypass UI Protection 為 Yes [即 uiAccess=true].
- 程式必須被可信認的數位簽章簽署, 得以知道程式的來源及其未被篡改.
- 程式必須放在系統分區中的 Program Files [(x86)] 下
這樣一來, 我們的程式就可以不需要透過 UAC 提升權級, 且能與高權級的程式溝通. 然而, 似乎 Bypass UI Protection 後的程式, 執行權級又比一般權級還高, 使得我們的程式收不到來自一般權級程式送來的訊息. 辦法還是有的, 我們可以透過 ChangeWindowMessageFilterEx 設定特定訊息的過濾行為.
更多資訊:
- Windows Vista Application Development Requirements for User Account Control Compatibility
- UAC 如何運作
沒有留言:
張貼留言