3 回答

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

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

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