2011-04-04 53 views
5

當我編寫需要執行「可管理」操作的應用程序時會發生什麼?當應用程序需要管理員權限時,Windows 7會彈出消息嗎?

像寫文件到C:\Program Files - 然後,當應用程序試圖這樣做,會發生什麼?會彈出消息詢問用戶密碼?會拋出異常嗎?程序是否會終止並導致計算機爆炸?上述所有的? :)

在旁註:Windows 7用戶默認情況下以管理員身份登錄?

+0

+1「程序將終止並且計算機將爆炸」。說真的,不是一個壞問題。 – 2011-04-04 17:39:24

回答

7

通常,Windows Vista和Windows 7不會自動檢測到您需要管理員權限,並且不會自動提升您的應用程序。 Microsoft has some guidelines正確請求高程。沒有清單的舊應用程序可能會發現自己也進行了虛擬化 - 也就是說,您對程序文件的寫入可能會被重定向到用戶配置文件目錄下的一個目錄。

請記住,您應該保持絕對最低限度的特權操作。 UAC的存在是爲了阻止應用程序開發者請求不必要的管理訪問,以提高安全性。應該搞亂程序文件的唯一程序是安裝程序。

請注意,Windows 7/Vista上的管理員用戶不能在不升級的情況下使用他們的權限 - 管理員令牌比默認情況下運行的進程高integrity level,因此無法訪問。如果您嘗試執行需要此類訪問的操作,則會收到拒絕訪問錯誤;底層的API不會拋出任何異常,它們通常會失敗並將GetLastError()設置爲ERROR_ACCESS_DENIED。當然,更高級別的API可能會選擇將其轉換爲拋出的異常,或者以劇烈的方式終止,儘管後者非常粗魯,並且不太可能出現在任何內置的Windows API中。

+0

鏈接似乎真的有用,謝謝 - 我要(希望)測試應用程序,並看看它適用於哪個uac配置文件。 7/vista用戶默認以管理員身份登錄,而密碼永遠不需要?在Linux中,例如,我可以以root身份登錄Mandriva並執行所有操作 - 而在debian中,即使我想要,我也無法做到這一點 - 或者我認爲。在XP中,我幾乎總是以管理員身份登錄,並可以完成所有工作。 – johny 2011-04-04 17:31:00

+1

7/vista中的Admin號碼與Debian或Ubuntu上具有sudo權限的管理用戶類似,UAC類似於sudo操作。並停止以root身份登錄Mandriva! :) – bdonlan 2011-04-04 17:32:47

相關問題