2013-07-04 137 views
0

我的MFC應用程序通常以管理員權限運行,但是,有一項操作需要管理員權限(激活狀態必須保存到HKLM的軟件)。在混合用戶/管理窗口中處理管理權限應用程序

現在,我創建了兩個.exe文件:普通應用程序和「Activation.exe」,它們必須作爲管理員運行並且在清單中具有requestedExecutionLevel = requireAdministrator。激活是通過一個使ShellExecute(Activation.exe)的按鈕開始的。

但是,兩個應用程序共享很多代碼,所以我想將兩個exe文件合併到一個exe文件中。但是,如何確保代碼的特定部分以管理員權限執行?這種方法應該/必須兼容到NT4。

一個想法是使用開關(例如「myapp.exe -activate」)將Activation.exe的功能集成到主exe文件中。一個小引導程序確保它只能以admin身份運行(在Manifest中爲requireAdministrator)並且只能執行ShellExec(myapp.exe -activate)。但這真的是最好的方法嗎?

回答

0

我不知道它是否是最好的方法(沒有人回答),但我現在做了:)引導程序只需要Manifest中的管理員,然後執行ShellExecute到主要可執行的開關「/ Activate」。 ..

0

我通常會使用ShellExecuteEx調用動詞runas以管理員身份啓動任何可執行文件,即使它表現爲asInvoker

請注意,在禁用UAC的系統上,最終的啓動可能無法獲得管理員權限;我相信這個警告也適用於啓動exe文件requireAdministrator的方法。