我想通过Java
获取WIndows登录/注销事件System name
Username
Timestamp
Login/Logoff/Lock/Unlock
我已经获得了windows genearte
的以下事件代码4608 STARTUP
4609 SHUTDOWN
4624 LOGON
4634 LOGOFF
4800 WORKSTATION_LOCKED
4801 WORKSTATION_UNLOCKED
我应该使用哪个库来跟踪所有这些?
答案 0 :(得分:0)
您需要使用WMI才能检索这些事件。在WMI中,您必须创建一个连接到root\cimv2
命名空间(基本上是默认操作系统命名空间)的COM服务器。在该命名空间中,您可以使用WQL查询(类似于SQL查询语法)来查询系统事件(例如用户登录/注销等...)。有不同的方法来实现这一目标:
对于本地Java WMI Wrapper,您可以考虑使用jWMI(虽然我不完全确定它是否仍然是最新的)。
过去我使用j-interop。即使此库针对WMI的远程COM访问,它也可用于创建从Java进程到本地WMI的COM桥。 j-interop自2013年以来没有任何更新,所以我不完全确定该库是否仍然受支持...以防这里有一个关于如何使用j-interop进行远程网桥的post。在该帖子中,您还将找到一些事件和性能计数器检索的示例查询。 (注意:由于安全原因,j-interop可能需要轻微configurations到你的Windows机器 - 所以如果你想为最终用户编写一个简单的便携式应用程序,那么j-interop可能不是最好的选择.. 。)
桥梁的另一个有趣的lib可能是JACOB(以前从未使用它,但看起来很有趣)。与j-interop一样,它使用JNI对COM库进行本机调用。