2013-04-25 140 views
0

我已經涉足與UAC很好地工作了一段時間,我發現有關的幾件事情:什麼時候應用程序絕對需要以管理員身份運行?

  1. 通過UAC啓用,程序的啓動文件夾中,需要進行以管理員身份運行(比如通過嵌入式清單),不能根據this Stack Overflow thread運行。
  2. 在啓動時運行程序的另一種方法是在64位機器中創建一個包含該應用程序路徑的密鑰:HKLM or HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKLM or HKCU\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
  3. 另一種方法是使用任務計劃程序設置以最高權限選項運行。這是繞過第1點所述問題的唯一方法。

從Linux背景來看,我不知道所有這些與管理員權限有關的問題。如果有人能列出那些絕對需要管理員權限的場景,那將非常有幫助!

我這樣問,因爲當我開發一些應用程序時,我在實現過程中遇到了幾個問題,主要是因爲我的應用程序在不應該的時候需要管理員權限。

如果我知道,在設計時,需要管理員權限的所有可能的情況下,我可能會爲我的所有應用程序設計一個通用服務,用於處理所有管理員任務(我認爲服務是Windows的做事方式喜歡這個)。

+0

需要管理員權限的唯一方案是調用需要提升特權的函數。 – 2013-04-25 05:31:27

+0

@CaptainObvlious,你能舉幾個例子嗎? – 2013-04-25 05:43:00

回答

0

確實沒有需要提升的場景或API函數調用列表。您的最佳選擇可能是關注哪些API調用需要提升。這是因爲只有某些值被傳遞給函數時才需要它。例如,CreateFile可以在您的主目錄中創建一個沒有提升的文件,但需要它在C:\ Windows中創建一個文件。如果通過用戶輸入提供目錄,則只需要知道是否需要提升即可在呼叫失敗時檢查錯誤代碼。如果需要提升,該功能會將錯誤狀態設置爲ERROR_ACCESS_DENIED並返回一個指示失敗的值。

+0

這就是一個場景的例子。另外,如果沒有列表,如果我們在這個線程中創建一個,你不認爲它對所有的Windows程序員都是非常有用的嗎?它肯定會幫助人們設計應用程序。 – 2013-04-25 07:35:29

+0

它可能會有幫助,但幾乎不可能保持,因此不適合SO。該列表將包括數百個(如果不是數千個)API調用,每個調用都有幾種變化以涵蓋所有可能性你應該假設所有的Windows API調用都可以返回'ERROR_ACCESS_DENIED'並且適當地處理它。 – 2013-04-25 07:46:08

+0

否否。我在談論_scenarios_而不是API調用。在你自己的回答中,你提到'CreateFile(C:\ Windows中的東西)'需要提升。這是一種情況。我相信不會有太多可怕的場景。 – 2013-04-25 07:53:04

相關問題