我有一個系統服務,它以管理員身份創建一個輔助交互過程,以便它可以訪問某些與桌面相關的資源,包括BlockInput()函數和NVIDIA的NVAPI函數,無法從服務運行。當登錄的用戶是Administrators組的成員,下面的工作:當標準用戶登錄時啓動管理交互過程
- 設置權限級別,包括SE_TCB_NAME
- 獲取活動會話ID與WTSGetActiveConsoleSessionId()
- 獲取登錄的用戶的會話ID與WTSQueryUserToken ()
- GetTokenInformation()與TokenLinkedToken
- DuplicateTokenEx()與SecurityImpersonation
- Launc ()
但是,當我有當前登錄會話是標準用戶而不是管理員中的一個,則步驟4失敗,可能是因爲標準用戶沒有管理級別令牌與它聯繫在一起。這裏有什麼解決方案?我假設我需要獲得其中一位管理員用戶的令牌,但我該怎麼做?如果該用戶不是登錄用戶,它是否仍然可以訪問與當前桌面交互的功能?
您是否嘗試過從目標用戶會話中的csrss實例中複製NT Authority \ SYSTEM用戶令牌?這應該在XP/7上工作,但我還沒有嘗試過8。 – hyru
我可以複製已知管理員成員用戶的令牌嗎?我注意到,當從標準用戶帳戶交互使用桌面期間爲該用戶調用UAC時,系統會要求我提供已知管理員級帳戶的密碼,這使我希望帳戶可以與桌面交互,儘管登錄的用戶是標準用戶。 –
@DisplayName:你不能複製一個令牌而不需要複製一個令牌。除非管理員登錄,否則不會有一個。但是無論你做什麼,都會有風險...... BlockInput不需要管理員權限,執行NVAPI功能? –