我想從Windows服務(本地系統帳戶)中知道系統中登錄用戶的數量,我在Windows上實現了此方法服務:從服務中獲取系統中登錄用戶的數量
protected override void OnSessionChange(SessionChangeDescription changeDescription)
{
base.OnSessionChange(changeDescription);
switch (changeDescription.Reason)
{
case SessionChangeReason.SessionLogon:
userCount += 1;
break;
case SessionChangeReason.SessionLogoff:
userCount -= 1;
break;
case SessionChangeReason.RemoteConnect:
userCount += 1;
break;
case SessionChangeReason.RemoteDisconnect:
userCount -= 1;
break;
default:
break;
}
}
的問題是,如果我在系統啓動時,可變USERCOUNT = 0手動地從用戶會話和不啓動該服務,而當我推出的服務有一個用戶登錄?我怎樣才能獲得系統在特定時刻登錄用戶的數量? 有沒有辦法做到這一點?
我只有一個用戶登錄系統和logonSessionCount還給我6 ...爲什麼? – aleroot 2010-10-03 17:20:30
@aleroot,看起來像非交互式會話也會返回。您可以使用LsaGetLogonSessionData()過濾會話列表,但這會變得相當複雜,只是爲了獲得用戶數量... – 2010-10-03 17:26:43
請檢查該方法的文檔,可能計數包括其他登錄類型,而不是交互式服務,網絡等等 – 2010-10-03 17:29:56