2015-05-30 93 views
0

是否有可能判斷交互式用戶會話是否自動啓動與用戶手動登錄?是否可以判斷交互式用戶會話是否自動啓動與用戶手動登錄?

我需要知道寫在C++/MFC Windows的本地服務這種區別。

編輯:「自動」我的意思是安裝Windows後沒有密碼創建的第一個用戶帳戶。在這種情況下,Windows會在啓動後自動加載到該帳戶中。

+0

定義「自動啓動」 –

+1

兩種登錄之間的唯一區別是在GUI登錄過程中得到了用戶名和密碼,所以我認爲它不太可能有任何可靠的方法來分辨。我認爲最接近你可以得到的是看是否配置了自動登錄,如果是和用戶名相同,則認爲登錄是自動的。 –

+0

@DavidHeffernan等人。對不起,我走了。 「自動」是指安裝Windows之後創建的第一個沒有密碼的用戶帳戶。在這種情況下,Windows會在啓動後自動加載到該帳戶中。 – c00000fd

回答

1

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

+0

是的,我知道。在我的情況下,兩個會話都會返回'Interactive' – c00000fd

相關問題