2010-01-18 76 views
1

我試圖查看用戶是否具有SeLoadDriver權限。我已經得到了PLUID:WIN API用戶權限C++

PLUID pld; 
    LookupPrivilegeValue(NULL, SE_LOAD_DRIVER_NAME, pld); 

但現在我不知道怎麼去從PLUID說明該用戶,還是不行,特權一個bool。我已經閱讀了相關的方法,但它認爲這可能是直接從PLUID值中獲取該方法的一種簡單方法。

謝謝

回答

3

這是一個比這更多的參與。

首先,你需要獲得進程令牌的權限設置(通過調用GetTokenInformation()),那麼你掃描你從那個了(這是LUID_AND_ATTRIBUTES結構的數組),爲您從LookupPrivilegeValue()得到LUID緩衝區。然後,您可以使用您找到的LUID_AND_ATTRIBUTES,並檢查Attributes是否包含所需的標誌(您的情況爲SE_PRIVILEGE_ENABLED)。

請注意,當您檢查啓用的權限時,您還應該檢查您正在檢查的Attributes中是否設置了SE_PRIVILEGE_REMOVED;同時擁有SE_PRIVILEGE_REMOVEDSE_PRIVILEGE_ENABLED的特權已被刪除且未啓用...