Windows中使用Win32\u NTLogEvent类的相关登录和注销事件

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 查询工作正常,为我带来了所有相关登录和注销的响应。问题是:如何将这两个事件联系起来?我的意思是,如何将哪个注销链接到某个登录

我正在尝试从类中获取登录和注销事件。为此,我使用以下WMI查询:

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类,我认为这是不可能的,因为有两个原因

  • 该类中的EventIdentifier指定关于事件类型的元数据,这些事件类型可以是1-5,表示:错误、警告、信息、安全审核成功和安全审核失败。你应该研究一下
    EventCode
    ,这就引出了我的第二点

  • 来自同一源的两个事件对此属性可能具有相同的值,但可能具有不同的严重性和EventIdentifier值。例如,成功注销记录在安全日志中,事件ID为538。但是,事件ID不一定是唯一的。在检索事件ID 538时,您可能会获得ID为538的其他类型的事件。如果发生这种情况,您可能需要根据源和ID进行筛选


  • 最后,正如您可能已经注意到的那样,审核事件(如46484647)支持Windows 10(或Windows Server 2016)

    如果您只需一个查询就可以得到一些东西,那么它将帮助您?@styx。对这正是我想要的所有本地用户的结果。你只想为本地用户使用它,还是打算为域用户扩展它?@Mayur现在,本地用户对我来说很好。@James你想在c#或使用命令行这样的代码中使用它?