10

是否可以使用 Java 以编程方式关闭 Windows?

干杯

4

4 回答 4

20
String shutdownCmd = "shutdown -s";
Process child = Runtime.getRuntime().exec(shutdownCmd);

有关关闭命令的更多信息,供您观赏

您可能感兴趣的其他一些命令行选项是

-i 显示GUI界面,必须是第一个选项

-l 注销(不能与 -m 选项一起使用)

-r 关闭并重新启动计算机

-m \computername(远程计算机关闭/重新启动/中止)

-t xx 设置关机超时时间为 xx 秒

-c "comment" 关机注释(最多 127 个字符)


当然,如果您不想使用这种方法,可以下载一些库来实现这一点。Java Windows Shutdown Functions就是一个例子。

根据他们的 SourceForge 页面:

JWSF - Java Windows Shutdown Functions API 允许 Java 应用程序在大多数 Windows 操作系统上执行以下操作,关闭、重新启动、注销、锁定工作站。JWSF 使用 JNI 进行本机调用。JWSF 受 LGPL 许可

于 2010-06-04T11:31:04.197 回答
3

运行命令“shutdown -s”。

编辑:像这样的东西:

Process p = Runtime.getRuntime().exec("shutdown -s");
于 2010-06-04T11:29:06.263 回答
3

这也可以使用 WMI 来完成,例如通过 JACOB:

import java.util.Enumeration;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.EnumVariant;
import com.jacob.com.Variant;

public abstract class Shutdown {

    public static void main(String[] args) {
        ComThread.InitMTA();
        try {
            ActiveXComponent wmi = new ActiveXComponent("winmgmts:{impersonationLevel=impersonate,(Shutdown)}!\\\\.");
            Variant instances = wmi.invoke("InstancesOf", "Win32_OperatingSystem");
            Enumeration<Variant> en = new EnumVariant(instances.getDispatch());
            ActiveXComponent os =
                new ActiveXComponent(en.nextElement().getDispatch());
            os.invoke("Win32Shutdown", 1, 0);
        } finally {
            ComThread.Release();
        }
    }

}
于 2010-08-09T13:48:01.000 回答
1

如果您想在特定时间内关闭它,请附加 -t 参数(以秒为单位)。

五秒钟:

String shutdownCmd = "shutdown -s -t5";
于 2014-03-06T13:15:33.230 回答