Завершение работы Windows с Java - PullRequest
9 голосов
/ 04 июня 2010

Можно ли программно завершить работу Windows с помощью Java?

Приветствия

Ответы [ 4 ]

18 голосов
/ 04 июня 2010
String shutdownCmd = "shutdown -s"
Process child = Runtime.getRuntime().exec(shutdownCmd);

Подробнее о команде отключения для вашего удовольствия от просмотра

Некоторые другие параметры командной строки, которые могут вас заинтересовать:

-i Показать графический интерфейс, должен быть первым параметром

-l Выход из системы (нельзя использовать с параметром -m)

-r Завершение работы и перезагрузка компьютера

-m \ computername (удаленный компьютер для выключения / перезагрузки / отмены)

-t xx Установить тайм-аут для отключения на xx секунд

-c «комментарий» Завершающий комментарий (максимум 127 символов)


Конечно, если вы предпочитаете не использовать этот метод, есть библиотеки, которые вы можете загрузить для достижения этой цели. Одним из примеров этого может быть Функции выключения Java Windows .

Согласно их странице SourceForge:

JWSF - API функций отключения Windows Java позволяет приложениям Java выполнять следующие операции в большинстве операционных систем Windows: выключение, перезагрузка, выход из системы, блокировка рабочей станции. JWSF делает собственные вызовы, используя JNI. JWSF подлежит лицензии LGPL

3 голосов
/ 09 августа 2010

Это также можно сделать с помощью 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();
        }
    }

}
3 голосов
/ 04 июня 2010

Запустите команду «shutdown -s».

Редактировать: Примерно так:

Process p = Runtime.getRuntime().exec("shutdown -s");
1 голос
/ 06 марта 2014

Если вы хотите отключить его через определенное время, добавьте параметр -t (в секундах).

На пять секунд:

String shutdownCmd = "shutdown -s -t5";
...