2012-10-23 98 views
2

有沒有辦法標記.EXE以請求以管理員身份運行?因此:標記.exe請求(不要求)以管理員身份運行

  1. 如果將UAC設置爲runas admin而沒有提示 - 它將以admin身份運行。
  2. 如果用戶無法運行管理員(請求不同的登錄名),請以用戶身份運行。
  3. 如果出現提示,提示用戶。如果接受,以管理員身份運行。
  4. 如果提示被拒絕,以用戶身份運行。

我知道如何用2個.exe程序來做到這一點。但我想用一個來做。該程序輸入用戶的許可證密鑰。在HKLM中,如果應用程序具有管理權限(因此所有用戶都有密鑰)。在HKCU如果沒有管理員權限。

+0

不,但請參閱http://stackoverflow.com/a/10255024/886887 –

+0

@HarryJohnston - 我沒有想到 - 提升自己。這很聰明。如果您將其作爲答案輸入,我很樂意將其標記爲此。 –

回答

3

如果用戶拒絕提升提示,則無法標記可執行文件,以便它在沒有管理員權限的情況下繼續運行。但是,進程可以嘗試使用提升的特權從同一個可執行文件啓動自身的第二個副本,並將作業傳遞給新進程(如果啓動成功)或繼續工作(如果不成功)。

有關如何提升自己的示例,請參見this answer

0

您可以通過請求highestAvailable而不是requireAdmin來獲得1和2。不過,我不喜歡它,因爲在整個應用程序的其他部分中,您可能需要測試以確定是否升高。

你不能得到#4。如果應用嘗試啓動,顯示UAC對話框,並且用戶拒絕UAC,則該應用不會啓動。如果你的應用程序中只有一部分需要提升,最好將該部分移至單獨的exe文件,並在該exe文件上放置一個需要提升的清單,然後讓主應用程序不需要它。

相關問題