我想从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