共用方式為


特權

許可權 是帳戶的許可權,例如使用者或組帳戶,在本機計算機上執行各種系統相關作業,例如關閉系統、載入設備驅動器或變更系統時間。 權限與訪問權限有兩種不同:

  • 權限可控制系統資源和系統相關工作的存取權,而存取權控制 安全性實體物件的存取權
  • 系統管理員會將許可權指派給使用者和組帳戶,而系統會根據物件 DACL 中 ACE 中授與的許可權,授與或拒絕安全性實體物件的存取權。

每個系統都有一個帳戶資料庫,可儲存使用者和組帳戶所持有的許可權。 當使用者登入時,系統會產生 存取令牌,其中包含使用者的許可權清單,包括授與使用者或使用者所屬群組的許可權。 請注意,許可權僅適用於本機計算機;網域帳戶在不同的計算機上可以有不同的許可權。

當使用者嘗試執行特殊許可權作業時,系統會檢查使用者的存取令牌,以判斷使用者是否擁有必要的許可權,如果是的話,它會檢查是否啟用許可權。 如果使用者失敗這些測試,系統就不會執行作業。

若要判斷存取令牌中保留的許可權,請呼叫 getTokenInformation函式,這也表示已啟用哪些許可權。 預設會停用大部分的許可權。

Windows API 會定義一組字串常數,例如SE_ASSIGNPRIMARYTOKEN_NAME,以識別各種許可權。 這些常數在所有系統上都相同,且定義於 Winnt.h 中。 如需 Windows 所定義之權限的資料表,請參閱 Privilege Constants。 不過,取得和調整存取令牌中許可權的函式會使用 LUID 類型來識別許可權。 許可權的 LUID 值可能不同於一部電腦到另一部電腦,以及同一部電腦上的一部開機到另一部計算機。 若要取得對應至其中一個字串常數的目前 LUID,請使用lookupPrivilegeValue函式。 使用 LookupPrivilegeName 函式,將 LUID 轉換為其對應的字串常數。

系統提供一組顯示名稱,描述每個許可權。 當您需要向使用者顯示許可權的描述時,這些會很有用。 使用 LookupPrivilegeDisplayName 函式,擷取對應至許可權字串常數的描述字元串。 例如,在使用美式英文的系統上,SE_SYSTEMTIME_NAME許可權的顯示名稱是「變更系統時間」。

您可以使用 PrivilegeCheck 函式來判斷存取權杖是否保存一組指定的許可權。 這主要適用於模擬客戶端的伺服器應用程式。

系統管理員可以使用系統管理工具,例如使用者管理員,來新增或移除使用者和組帳戶的許可權。 系統管理員可以以程序設計方式使用 Local Security Authority (LSA) 函式來處理許可權。 LsaAddAccountRightsLsaRemoveAccountRights 函式會新增或移除帳戶的許可權。 LsaEnumerateAccountRights 函式會列舉指定帳戶所持有的許可權。 LsaEnumerateAccountsWithUserRight 函式會列舉持有指定許可權的帳戶。

授權常數

在 C++ 中啟用和停用許可權