`
i2534
  • 浏览: 182848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用com4j调用wmi关闭windows和获取系统日志

    博客分类:
  • util
阅读更多

接上回,接下来是关机,这个需要用到权限哦

PS:以下代码都在windows xp上运行通过,windows 7会有什么表现我还不确定,虽然我现在用的是win7,懒得测试了。但有一点可以确定,wsh的regWrite和regDelete在win7上是不会成功的,我估计是win7的安全机制在其作用。

至于vista,啊,vista是什么?

 

    private void shutdownInWindows() {//接上回
        ISWbemLocator wbemLocator = ClassFactory.createSWbemLocator();
        ISWbemServices wbemServices = wbemLocator.connectServer("localhost",
                "Root\\CIMv2", "", "", "", "", 0, null);
        ISWbemSecurity security = wbemServices.security_();//调用安全接口
        security.privileges().add(WbemPrivilegeEnum.wbemPrivilegeShutdown, true);//打开关机权限,必须,否则windows不予理睬...
        security.impersonationLevel(WbemImpersonationLevelEnum.wbemImpersonationLevelImpersonate);
        ISWbemObjectSet result = wbemServices.execQuery(
                "Select * From Win32_OperatingSystem", "WQL", 16, null);//使用wql获得操作系统对象
        for (Com4jObject obj : result) {
            ISWbemObject wo = obj.queryInterface(ISWbemObject.class);
            wo.execMethod_("Shutdown", null, 0, null);//调用关机命令,OK
        }
    }

 然后呢,是获取系统日志,很强大啊

 

   private void getEventsInWindowsWithCondition(Set<Event> set, int logType, String condition) {
        ISWbemLocator wbemLocator = ClassFactory.createSWbemLocator();
        ISWbemServices wbemServices = wbemLocator.connectServer("localhost",
                "Root\\CIMv2", "", "", "", "", 0, null);
        ISWbemObjectSet result = wbemServices.execQuery(//wql,MSDN上可以查到的,不用多少了
                "Select EventType,TimeGenerated,SourceName,Message,EventCode From Win32_NTLogEvent Where Logfile = '" + Event.LogType.valueOf(logType) + "'" + condition, "WQL", 16, null);
        for (Com4jObject obj : result) {
            ISWbemObject wo = obj.queryInterface(ISWbemObject.class);
            Event e = new Event();
            e.setLogType(logType);
            e.setEventType((Short) wo.properties_("EventType", 0).value());//获取字段值
            e.setDate(parseDate(wo.properties_("TimeGenerated", 0).value()));
            e.setSource((String) wo.properties_("SourceName", 0).value());
            e.setMessage((String) wo.properties_("Message", 0).value());
            e.setCode((Integer) wo.properties_("EventCode", 0).value());
            set.add(e);
        }
    }
分享到:
评论
5 楼 i2534 2012-06-25  
amour663 写道
20120613065139.779251-000
打印出来的格式长这样。
表示的日期是2012-06-13,但是后面的并不表示6点51分,而是表示14点51分39秒。


这个是时区不同吧,它返回的可能是0时区
4 楼 amour663 2012-06-24  
20120613065139.779251-000
打印出来的格式长这样。
表示的日期是2012-06-13,但是后面的并不表示6点51分,而是表示14点51分39秒。
3 楼 i2534 2012-06-21  
amour663 写道
请教下,你的parseDate是怎么写的啊?

很久以前的代码了,忘记了,你可以打印出来时间格式看看
2 楼 amour663 2012-06-21  
请教下,你的parseDate是怎么写的啊?
1 楼 yuanlijia1 2011-11-21  
您好,很高兴看到您的分享。
   获取系统日志这段代码应该日一部分的吧,能把测试通的代码给我一份吗,最近正在找这方便的资料。yuanlj@sinoufc.com

相关推荐

    使用j-Interop实现java连接wmi获取windows系统信息的例子

    本文将深入探讨如何使用j-Interop来连接WMI并获取Windows系统信息。 首先,j-Interop是一个开源项目,它为Java提供了一个全面的COM和ActiveX互操作性解决方案。通过j-Interop,Java开发者可以调用COM对象,例如WMI...

    C# 调用WMI 获取系统信息

    总的来说,通过C#调用WMI获取系统信息是Windows开发中的一个重要技能,它可以帮助开发者或系统管理员获取详细的系统状态,进行故障排查、性能监控和资源管理。了解并熟练运用这一技术对于提升工作效率和解决问题具有...

    python使用wmi模块获取windows下的系统信息 监控系统

    Python用WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。 本文实例讲述了python使用wmi模块获取windows下的系统信息 监控系统 ...

    wmi纯java调用所需jar包.zip

    WMI(Windows Management Instrumentation)是微软Windows操作系统提供的一种管理和操作环境,允许应用程序通过标准接口访问和控制操作系统、硬件设备和服务等系统资源的信息。在Java环境中,若要进行WMI调用,通常...

    C++调用WMI遍历进程

    在IT领域,Windows Management Instrumentation(WMI)是Windows操作系统提供的一个核心组件,它允许应用程序通过标准接口访问和管理系统的各种资源,如硬件、软件、网络等。C++调用WMI来遍历进程,是一种常见的系统...

    wmi4j 远程执行cmd命令获取命令执行的结果

    使用wmi4j 连接远程主机获取进程列表,创建文件夹、共享文件夹、执行netstat -ano输出到aa.txt文件,读取文件、撤销文件夹共享、删除文件夹及aa.txt文件;即实现远程执行cmd命令获取命令执行的结果的效果。

    delphi操作WMI获取大量系统信息的例子

    WMI(Windows Management Instrumentation)是微软提供的一个核心组件,用于管理系统和网络环境中的各种资源,提供了丰富的接口来获取系统信息。本示例将详细探讨如何使用Delphi操作WMI来获取大量系统信息。 首先,...

    用WMI获取操作系统补丁信息

    在IT领域,Windows Management Instrumentation(WMI)是一个强大的工具,用于管理和监控Windows操作系统以及运行在其上的应用程序。本文将深入探讨如何利用C++通过WMI获取操作系统的补丁(hotfix)信息,同时...

    c++封装好的IP的获取和修改源码,通过NetworkCfg和wmi方式,支持Windows和WinCE系统,使用简单

    本资源提供了一个用C++编写的库,专门用于处理IP地址的获取和修改功能,它同时兼容Windows和WinCE操作系统。这个库巧妙地结合了`NetworkCfg`接口和`WMI`(Windows Management Instrumentation)技术,以实现高效、...

    CC++通过WMI和系统API函数获取获取系统硬件配置信息

    标题和描述均指向了一个核心议题,即如何使用C/C++结合Windows Management Instrumentation (WMI)和系统API函数来获取系统的硬件配置信息。这不仅包括常见的性能监控指标如CPU使用率、内存使用情况和网络利用率,还...

    Golang 获取wmi windows硬件信息

    这是一个Golang 获取wmi windows硬件信息的源代码,包括CPU,网卡,内存,硬盘等信息

    C# 调用WMI 获取系统信息,源代码及示例。

    本篇文章将详细解释如何使用C#调用WMI获取系统信息,并提供源代码和示例。 首先,理解WMI:它是微软的管理规范,允许应用程序通过标准接口查询和更改Windows系统状态。WMI提供了丰富的类库,这些类库对应于系统中的...

    python用WMI等获取及修改windows系统信息.docx

    Python 使用 WMI 获取及修改 Windows 系统信息 概述 本文档介绍了使用 Python 语言通过 WMI(Windows ...使用 WMI 获取和修改 Windows 系统信息可以帮助开发者更好地管理和监控系统资源,提高系统的安全性和稳定性。

    MFC使用COM加载WMI服务,另类获取系统服务详细. WmiCorporation

    在IT行业中,Windows Management Instrumentation(WMI)是一种强大的接口,允许开发者获取和管理系统资源的信息。MFC(Microsoft Foundation Classes)是C++编程中的一个框架,它为开发Windows应用程序提供了便利。...

    VB WMI 读取PC系统信息

    在IT领域,VB(Visual Basic)是一种常用的编程语言,它为开发者提供了强大的工具来...总的来说,通过VB和WMI,你可以轻松地获取和处理Windows系统中的各种信息,这对于系统监控、日志记录、故障排查等任务非常有用。

    WMI获取远程服务器CPU,内存使用率函数源代码

    在IT领域,Windows Management Instrumentation(WMI)是一种强大的系统管理工具,允许开发者通过脚本或编程语言查询和控制Windows操作系统中的各种管理信息。本文将深入探讨如何利用C#编程语言,通过WMI来获取远程...

    WMI设置网卡及获取网卡信息

    本篇将深入探讨如何使用Windows Management Instrumentation(WMI)来设置和获取网卡信息,特别是在本地连接中的应用。WMI是Microsoft提供的一种系统管理接口,它允许开发者通过标准的脚本语言或编程语言来访问和...

    wmi应用(用于获取CPUID和硬盘ID)

    【标题】"wmi应用(用于获取CPUID和硬盘ID)" 涉及到的是Windows Management Instrumentation(WMI)技术的应用,它主要用于在Windows操作系统中获取计算机硬件和软件的相关信息,例如CPU标识符(CPUID)和硬盘的唯一...

    读取系统日志获取开关机时间

    在Windows操作系统中,系统日志记录了各种操作和事件,包括系统的启动、关闭以及其他关键活动。获取系统的开关机时间可以通过解析这些日志来实现。本文将深入探讨如何通过读取系统日志来获取这一信息,并提供一个...

    使用WMI获取系统信息,硬件,进程和服务的实例

    在Windows操作系统中,WMI(Windows Management Instrumentation)是一个核心组件,它提供了对系统硬件、软件和服务等资源的全面管理能力。WMI是基于WBEM(Web-Based Enterprise Management)标准的,允许开发者通过...

Global site tag (gtag.js) - Google Analytics