我正在嘗試確定特定用戶進程的登錄會話ID。爲此,我檢索了流程令牌,然後使用TokenOrigin選項調用GetTokenInformation。爲什麼TokenOrigin總是返回相同的值?
但是,答案似乎總是0x3E7,即使我有兩個不同的用戶同時登錄。顯然這是不對的。
什麼是TokenOrigin實際查找,特別是0x3E7的意義是什麼?如何獲得令牌的真實登錄會話ID?
我正在嘗試確定特定用戶進程的登錄會話ID。爲此,我檢索了流程令牌,然後使用TokenOrigin選項調用GetTokenInformation。爲什麼TokenOrigin總是返回相同的值?
但是,答案似乎總是0x3E7,即使我有兩個不同的用戶同時登錄。顯然這是不對的。
什麼是TokenOrigin實際查找,特別是0x3E7的意義是什麼?如何獲得令牌的真實登錄會話ID?
TokenOrigin下documentation for TOKEN_INFORMATION_CLASS,,說:
如果令牌是由於所使用顯式憑據,如傳遞一個名稱,域的登錄和密碼傳遞給LogonUser函數,那麼TOKEN_ORIGIN結構將包含創建它的登錄會話的ID。
那樣的聲音彷彿這意味着令牌屬於登錄會話,但如果你讀它小心地可能同樣意味着與執行的認證操作過程中相關的登錄會話事實證明,這確實是返回的。在Windows 7中,0x3E7通常是登錄會話winlogon.exe
,它負責驗證交互式登錄。
如果我們look under logon identifier in the glossary它說:
要從訪問令牌獲取登錄ID,請致電TokenStatistics的GetTokenInformation功能;登錄ID在AuthenticationId成員中。
我已確認此功能按預期工作。