Завершите работу Windows с Java

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

Удачи

9
задан RailsSon 4 June 2010 в 11:28
поделиться

3 ответа

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

Дополнительная информация о команде выключения для вашего удовольствия от просмотра

Некоторые другие параметры командной строки, которые могут иметь Вас интересуют

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

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

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

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

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

-c "comment" Комментарий выключения (максимум 127 символов)


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

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

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

19
ответ дан 4 December 2019 в 08:14
поделиться

Выполните команду "shutdown -s".

Изменить: Примерно так:

Process p = Runtime.getRuntime().exec("shutdown -s");
3
ответ дан 4 December 2019 в 08:14
поделиться

Это также можно сделать с помощью 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
ответ дан 4 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: