使用Java跟踪Windows登录/注销事件

时间:2015-06-20 11:55:42

标签: java windows winapi login

我想通过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

我应该使用哪个库来跟踪所有这些?

1 个答案:

答案 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库进行本机调用。