推荐的库/ howtos与java一起使用WMI?

嘿伙计。 我有一个相当大的商业项目(所以付费许可总是一个选项),正在进入窗口空间,我打算与WMI做很多投票。 这是一个Java 1.6客户端应用程序。 有没有什么好的资源或书籍让我开始在Java中完成这个? 我觉得我的.NET Fu非常强大,但是我经常不知道从哪里开始完成Java中的相同任务。

谢谢!

我不知道任何特定于Java的书籍,但是如果我能提供一些建议,那就从WMI MSDN 文档开始吧。 此外,因为WMI是一个基于COM的API,我会考虑使用Java到COM桥来访问API。 以下任何一项应该工作:

  • Java2Com
  • JACOB – 一个WMI 例子 。
  • J-Integra – 一个WMI 例子 。
  • J-Interop – 一个WMI 示例 。
  • 另一个Java2Com工具

对于WMI的Java包装,有jWMI库。

我想传达一些关于jWMI的警告:如果您不能控制应用程序运行的系统(比如说简单的桌面应用程序),则可能会遇到与防病毒相关的问题。 jWMI不是一个真正的库,而只是一个实用程序。 它会在飞行中创建一个jwmi.vbs文件,并试图用“cmd / c”运行时调用执行它。 正如你所想象的那样,防病毒软件通常对这样的行为并不满意,沙盒/立即阻止文件。

下面是一个使用Jawin使用WMI获得系统正常运行时间的例子。

要运行代码,您需要下载Jawin库并将jawin.dll添加到您的eclipse项目根目录

 public static void main(String[] args) throws COMException { String computerName = ""; String userName = ""; String password = ""; String namespace = "root/cimv2"; String queryProcessor = "SELECT * FROM Win32_OperatingSystem"; DispatchPtr dispatcher = null; try { ISWbemLocator locator = new ISWbemLocator( "WbemScripting.SWbemLocator"); ISWbemServices wbemServices = locator.Connectserver(computerName, namespace, userName, password, "", "", 0, dispatcher); ISWbemObjectSet wbemObjectSet = wbemServices.ExecQuery( queryProcessor, "WQL", 0, null); DispatchPtr[] results = new DispatchPtr[wbemObjectSet.getCount()]; IUnknown unknown = wbemObjectSet.get_NewEnum(); IEnumVariant enumVariant = (IEnumVariant) unknown .queryInterface(IEnumVariant.class); enumVariant.Next(wbemObjectSet.getCount(), results); for (int i = 0; i < results.length; i++) { ISWbemObject wbemObject = (ISWbemObject) results[i] .queryInterface(ISWbemObject.class); System.out.println("Uptime: " + wbemObject.get("LastBootUpTime")); } } catch (COMException e) { e.printStackTrace(); }