3 回答

TA貢獻1921條經驗 獲得超9個贊
雖然不完全,但是您可以采取相反的做法- 如果已經擁有特權,則可以放棄特權。因此,您可以使用Kate Gregory列出的方法之一,以管理員身份啟動程序。然后,放棄不需要的特權;請參閱如何在Windows上的C ++中刪除特權。

TA貢獻1911條經驗 獲得超7個贊
如果您希望應用程序始終處于高程狀態,則可以通過在其中建立一個清單(而不是從技術上進行編譯)或通過將外部清單與exe放在同一文件夾中來為它提供清單。如果您要決定以個人身份運行它,請右鍵單擊exe或快捷方式,然后選擇“以管理員身份運行”。如果要從代碼啟動它,則runas在啟動該過程時使用動詞作為@vcsjones注釋。例如:
ShellExecute( NULL,
"runas",
"c:\\windows\\notepad.exe",
" c:\\temp\\report.txt",
NULL, // default dir
SW_SHOWNORMAL
);

TA貢獻1946條經驗 獲得超3個贊
您只能在流程創建期間提升它。當一個進程已經運行時,就無法更改其安全性令牌:它要么提升運行,要么不提升運行。
如果您的應用程序需要執行管理任務,并且通常在不提升的情況下運行,則您必須創建另一個.exe文件,該文件將要求使用清單文件進行提升。要啟動提升過程,您必須使用ShellExecute或ShellExecuteEx運行。從您的主流程中,您將需要一種將命令傳遞到將運行提升的新流程的方法。
有關UAC的更多信息,請閱讀“ 設計Windows Vista系列UAC應用程序 ”。
- 3 回答
- 0 關注
- 725 瀏覽
添加回答
舉報