-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshotdown.txt
71 lines (49 loc) · 4.99 KB
/
shotdown.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Используя следующие команды вы можете завершить Windows с помощью bat–файла:
shutdown -r — перезагрузка
shutdown -s — закрытие
shutdown -l — завершение сеанса
shutdown -t xx — где xx — кол-во секунд ожидания до закрытия/перезагрузки/конца сеанса
shutdown -i — выдаёт диалоговое окно для указания, какой функцией вы хотите воспользоваться
shutdown -a — сбрасывает предыдущую команду закрытия Windows. Очень удобно!
shutdown -h — режим сна. Распространённая ошибка: это не вызов файла справки!
Дополнение
Если вы работаете с удалённого компьютера, бывает полезно добавить опцию -f для принудительной перезагрузки. В противном случае, ваша сессия может завершиться и «упрямое» приложение приведёт к сбою в системе.
Когда мне нужно произвести немедленную перезагрузку, я использую следующее:
shutdown -t 0 -r -f
Если действовать более мягко, оставляя некоторое время перед перезагрузкой, можно воспользоваться следующей командой:
shutdown -t 30 -r
Как можно понять из комментариев, отсрочка закрытия по умолчанию предполагает -f.
Дополнение 2
Также существует опция -m для удалённого закрытия Windows:
shutdown -r -f -m \\machinename
Параметр -r вызывает перезагрузку (что, как правило, подходит при работе с удалённой машиной, поскольку её физический запуск может оказаться затруднительным).
Параметр -f вызывает принудительную перезагрузку.
Естественно, для закрытия системы на удалённой машине вы должны иметь соответствующие права доступа.
Дополнение 3
У вас также есть вся серия "rundll32.exe shell32.dll" (пожалуйста, перед использование посмотрите секцию НО, так как использовать данный подход с большой вероятностью не стоит):
rundll32.exe user.exe,**ExitWindows** [Быстрое закрытие Windows]
rundll32.exe user.exe,**ExitWindowsExec** [Перезагрузка Windows]
rundll32.exe shell32.dll,SHExitWindowsEx n
где n принимает следующие значения:
0 - LOGOFF
1 - SHUTDOWN
2 - REBOOT
4 - FORCE
8 - POWEROFF
(значения можно комбинировать -> 6 = 2+4 FORCE REBOOT)
НО!
1800 INFORMATION любезно замечает в комментариях:
Не используйте для вашей цели rundll32.exe. rundll32.exe ожидает, что функция, передаваемая вами в командной строке, имеет точно заданную сигнатуру метода, которая может не совпадать с сигнатурой метода ExitWindows.
Raymond CHEN писал:
в 2004 «Что может пойти не так, когда вы нарушаете соглашение о вызове?»:
Сигнатура функции, необходимая для функций, вызываемых rundll32.exe такова:
void CALLBACK ExitWindowsEx(HWND hwnd, HINSTANCE hinst,
LPSTR pszCmdLine, int nCmdShow);
Это не останавливает некоторых от использования rundll32 для вызова произвольных функций, не предназначенных для вызова rundll32, например,user32 LockWorkStationиuser32 ExitWindowsEx`.
(Упс.)
Вот настоящая сигнатура функции для ExitWindowsEx :
BOOL WINAPI ExitWindowsEx(UINT uFlags, DWORD dwReserved);
в 2011: «Бросая мусор на обочину: печальная история программы rundll32»
И для полной ясности:
в 2013 «Когда целесообразно использовать rundll32? Ответ прост: не используйте её!»:
Rundll32 - отголосок прошлого, оставшийся от Windows 95 и устаревший как минимум во времена Windows Vista из-за того, что нарушает множество современных технических принципов.