特權_(Windows)

特權 （ privilege ） 是Windows操作系統的帳戶權限 ， 如用戶 、 用戶群 、 系統服務 、 計算機等執行不同的系統操作 ， 如關機 、 裝入設備驅動 、 改編系統時間等 。 特權不同於訪問權限 （ access right ） ： 特權控制訪問系統資源或系統相關任務 ， 訪問特權控制訪問可安全對象 （ securable object ） ； 系統管理員賦予特權給用戶或用戶群 ； 而系統允許或拒絕對可安全對象的訪問 ， 這是基於對象的自主訪問控制列表 （ DACL ） 中的訪問控制項 （ ACE ） 。 系統有一個帳戶數據庫 ， 存儲了用戶或用戶群的特權 。 當用戶登錄後 ， 系統產生一個訪問令牌 （ access token ） 包含了用戶的特權清單 ， 這包含用戶所在群的特權 。 注意特權僅限於本地計算機 ， 域帳戶在不同計算機上有不同特權 。 當用戶試圖執行一個特權操作 ， 系統檢查用戶的訪問令牌以確定使用是否具有必要的特權 。 調用GetTokenInformation函數可以檢查特權 。 Windows API在Winnt.h定義了一套字符串常量 ， 如SE_ASSIGNPRIMARYTOKEN_NAME ， 辨識不同的特權 。 見 “ Privilege Constants ” 。 API函數使用LUID類型來標識不同的特權 。 LUID隨不同的計算機啓動任務而變化 ， 因此要用LookupPrivilegeValue函數查出LUID與 “ Privilege Constants ” 的對應 。 使用LookupPrivilegeName函數把LUID轉化爲對應的字符串常量 。 系統給特權一套用於顯示的描述字符串 。 使用LookupPrivilegeDisplayName函數獲取對應於字符串常量的特權的描述字符串 。 例如特權SE_SYSTEMTIME_NAME的描述字符串是 " Change the system time " 。 可以用PrivilegeCheck函數檢查一個訪問令牌是否具有指定的特權集 。 系統管理員可以用Local Security Authority ( LSA ) 系列函數管理特權 。 LsaAddAccountRights與LsaRemoveAccountRights函數增減特權 。 LsaEnumerateAccountRights函數枚舉指定帳戶的特權 。 LsaEnumerateAccountsWithUserRight函數枚舉具有指定特權的帳戶清單 。