Windows中使用Win32\u NTLogEvent类的相关登录和注销事件
我正在尝试从类中获取登录和注销事件。为此,我使用以下WMI查询:Windows中使用Win32\u NTLogEvent类的相关登录和注销事件,windows,events,login,wmi,logoff,Windows,Events,Login,Wmi,Logoff,我正在尝试从类中获取登录和注销事件。为此,我使用以下WMI查询: PATH Win32_NTLogEvent WHERE "(EventIdentifier = 4648 OR EventIdentifier = 4647 OR EventIdentifier = 4634) And TimeGenerated > '201811010000'" GET /ALL 查询工作正常,为我带来了所有相关登录和注销的响应。问题是:如何将这两个事件联系起来?我的意思是,如何将哪个注销链接到某个登录
PATH Win32_NTLogEvent WHERE "(EventIdentifier = 4648 OR EventIdentifier = 4647 OR EventIdentifier = 4634) And TimeGenerated > '201811010000'" GET /ALL
查询工作正常,为我带来了所有相关登录和注销的响应。问题是:如何将这两个事件联系起来?我的意思是,如何将哪个注销链接到某个登录事件
分析事件(登录尝试)和(帐户已注销)的(不太清楚)文档,考虑到4648事件的SubjectLogonId
,以及4634事件的TargetLogonId
,两者似乎都有链接Id
考虑到这些信息,我正在解析返回的事件,从InsertionString获取ID,并试图找到链接的ID,但没有找到任何ID
我是被误解了还是我在寻找错误的信息
我在Windows 10和Windows Server 2012中测试了它,但我正在寻找能够在尽可能多的版本中工作的东西
一些背景:
简而言之,我想知道一些特定日期的登录/注销时间和会话持续时间。我能够使用以下WMI查询(类)获取特定用户的登录和注销时间:
PATH Win32\u networklogin配置文件,其中“Name='DOMAIN\\user'”获取LastLogon,LastLogoff
我对第一个查询的意图几乎是一样的,但是我想要所有不知道每个用户名的用户的信息。我的最佳猜测是如上所述使用Win32\u NTLogEvent类,但这不是强制性的。您正在尝试使用4648登录尝试。此事件仅表示尝试以及是否成功 您应该查找的事件是“帐户已成功登录”。该事件的
登录ID
将与4634“帐户已注销”的登录ID
关联
要对“LastLogon,LastLogoff”的背景声明发表评论,这些值在每次登录或注销时都会在active directory中更新,但不保留历史记录
我知道WBEM界面从Windows XP开始就存在,我找不到证据证明您的powershell查询在该平台上可以工作,但是,它们应该在Windows 7+和Server 2008+上不经修改就可以工作。在Windows vista(或Windows Server 2008)及更高版本中,此powershell命令应该起作用
Get-WmiObject -Query "select Name, LastLogon, LastLogoff from Win32_NetworkLoginProfile WHERE {your logic here}"
但是,如果您想使用支持Windows XP的Win32\u NTLogEvent类,我认为这是不可能的,因为有两个原因
EventCode
,这就引出了我的第二点最后,正如您可能已经注意到的那样,审核事件(如46484647)支持Windows 10(或Windows Server 2016)如果您只需一个查询就可以得到一些东西,那么它将帮助您?@styx。对这正是我想要的所有本地用户的结果。你只想为本地用户使用它,还是打算为域用户扩展它?@Mayur现在,本地用户对我来说很好。@James你想在c#或使用命令行这样的代码中使用它?