3 回答

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

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

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