是否有可能判斷交互式用戶會話是否自動啓動與用戶手動登錄?是否可以判斷交互式用戶會話是否自動啓動與用戶手動登錄?
我需要知道寫在C++/MFC Windows的本地服務這種區別。
編輯:「自動」我的意思是安裝Windows後沒有密碼創建的第一個用戶帳戶。在這種情況下,Windows會在啓動後自動加載到該帳戶中。
是否有可能判斷交互式用戶會話是否自動啓動與用戶手動登錄?是否可以判斷交互式用戶會話是否自動啓動與用戶手動登錄?
我需要知道寫在C++/MFC Windows的本地服務這種區別。
編輯:「自動」我的意思是安裝Windows後沒有密碼創建的第一個用戶帳戶。在這種情況下,Windows會在啓動後自動加載到該帳戶中。
Windows沒有「自動啓動」登錄類型。 登錄類型是SECURITY_LOGON_TYPE
枚舉值之一。它在<Ntsecapi.h>
這樣的定義 :
typedef enum _SECURITY_LOGON_TYPE {
Interactive = 2,
Network,
Batch,
Service,
Proxy,
Unlock,
NetworkCleartext,
NewCredentials,
RemoteInteractive,
CachedInteractive,
CachedRemoteInteractive,
CachedUnlock
} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
你可以使用LsaEnumerateLogonSessions
和 然後LsaGetLogonSessionData
價值,並有它是作爲sessionData.LogonType
。
是的,我知道。在我的情況下,兩個會話都會返回'Interactive' – c00000fd
定義「自動啓動」 –
兩種登錄之間的唯一區別是在GUI登錄過程中得到了用戶名和密碼,所以我認爲它不太可能有任何可靠的方法來分辨。我認爲最接近你可以得到的是看是否配置了自動登錄,如果是和用戶名相同,則認爲登錄是自動的。 –
@DavidHeffernan等人。對不起,我走了。 「自動」是指安裝Windows之後創建的第一個沒有密碼的用戶帳戶。在這種情況下,Windows會在啓動後自動加載到該帳戶中。 – c00000fd