如何使用Java检测windows关机或重启时间?

How to dectect windows shutdown or restart time using Java?

如何使用java查看windows关机和重启时间谁能帮忙 我有启动代码 windows

Process uptimeProc = Runtime.getRuntime().exec("cmd /c systeminfo | find \"System Boot Time:\"");

您尝试执行的命令是正确的。

您将需要等待或过程完成并 return 输出。在从中获取 InputStream 之前使用 Process 对象的 waitFor() 方法。

此示例代码可能会让您入门:

    Process uptimeProc = Runtime.getRuntime().exec("cmd /c systeminfo | find \"System Boot Time:\"");
    uptimeProc.waitFor();
    BufferedReader br = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
    String line = null;
    line = br.readLine();
    System.out.println("Boot Time : " + line);

Update

在windows中尝试这两段代码来查找开机时间和关机时间。这些是根据 Windows 事件管理器中生成的事件确定的。开机事件ID为6005,关机事件ID为1074。

来源:

https://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=6005&EvtSrc=EventLog&LCID=1033

https://www.microsoft.com/technet/support/ee/transform.aspx?ProdName=Windows+Operating+System&ProdVer=5.2&EvtID=1074&EvtSrc=User32&LCID=1033

启动时间:

    Process uptimeProc = Runtime.getRuntime().exec("powershell -Command \"get-eventlog System | where-object {$_.EventID -eq '6005'} | sort -desc TimeGenerated\"");
    uptimeProc.waitFor();
    BufferedReader br = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
    String line = null;
    while((line = br.readLine())!=null){
        System.out.println(line);
    }

关机时间:

    Process uptimeProc = Runtime.getRuntime().exec("powershell -Command \"get-eventlog System | where-object {$_.EventID -eq '1074'} | sort -desc TimeGenerated\"");
    uptimeProc.waitFor();
    BufferedReader br = new BufferedReader(new InputStreamReader(uptimeProc.getInputStream()));
    String line = null;
    while((line = br.readLine())!=null){
        System.out.println(line);
    }

您将需要执行一些提取操作。但这应该能让你走上正确的方向。

希望对您有所帮助!