Чи C:\windows\system32\shutdown.exeпотрібен файл для вимкнення або перезавантаження Windows?
shutdown -s -t 0- звичайна shutdownвідображає лише довідку.
Чи C:\windows\system32\shutdown.exeпотрібен файл для вимкнення або перезавантаження Windows?
shutdown -s -t 0- звичайна shutdownвідображає лише довідку.
Відповіді:
Ваше запитання, звичайно, походить з вашої відповіді за адресою https://codegolf.stackexchange.com/a/24011/18907 , зокрема з kinokijufкоментаря до коментаря при первинному перегляді вашої відповіді.
Як було kinokijufсказано, Windows - це не Unix. У Unices та Linux, shutdownдійсно, беруть участь у повному процесі відключення. Це програма, яка надсилає регулярні попереджувальні повідомлення користувачам, що ввійшли в систему, і записує /run/nologinфайл, щоб запобігти подальшому входу в систему задовго до запланованого часу завершення роботи.
У Windows NT це не так.
Дія "Вимкнення" на "кнопці живлення" в меню "Пуск" Провідника Windows, опція меню "Вимкнення" в диспетчері завдань, REBOOT /Sв TCC або Take Command та інших прикладних програмах, які дозволяють вимкнути систему з усіх ініційованих вимкнень. шляхом безпосереднього виклику одного з двох викликів Win32 API: InitiateSystemShutdownEx()або ExitWindowsEx(). Вони не роблять справи опосередковано, запускаючи shutdownпрограму. (Насправді для цього потрібно більше коду, ніж просто виклик виклику API Win32.) shutdownПрограма, коли робиться локальне відключення, також викликає ті самі дзвінки API Win32.
Це насправді winlogon, csrssі smssце програми, які вимикають Windows NT. Зокрема, саме winlogonця робота полягає в обробці відкладених запитів на закриття.
shutdown. Сторінки керівництва FreeBSD 9.2 . 2013-03-19.shutdown. systemdсторінки посібника . 2013. Freedesktop.org.shutdown. upstartсторінки посібника . 2009. Canonical Ltd.InitiateSystemShutdownEx. MSDN. Корпорація Microsoft.ExitWindowsEx. MSDN. Корпорація Microsoft.REBOOT. Візьміть довідку Command / TCC. Програмне забезпечення JP.shutdownкоманда зовсім не бере участь у повному процесі відключення; в той час як він може надсилати попереджувальні повідомлення або торкатися / запускати / нологін, все, що він робить у відношенні фактичного вимкнення, це надіслати відповідну команду systemd, init тощо та вийти. Процес init або його сучасний замінник systemd фактично спрацьовує з вимкнення системи.
shutdownє прямо перед вами. Думаючи, що це так само неправильно, як дурниці у Вступі до Linux на TLDP, де сказано, що "UNIX не зроблений для того, щоб його закривали". Програму UNIX справді було закрито, і за останні 40 років існує досить багато книг для професіоналів UNIX, які охоплюють повну процедуру, з попереджуючими повідомленнями для користувачів як крок №1.
shutdownна сторінці 22, але його немає в моїй бібліотеці. Вибачте, Сміт. (-: Моя бібліотека має подібні довідки SVR5 Coffin ( етап попередження користувачів, описаний на сторінках 355 та 683), керівництво системного адміністратора SCO UNIX (попереджає користувачів як перший крок відключення на сторінках 52–53) і навіть Fielder's / Система адміністрування UNIX системи Hunter (у всьому розділі 6 йдеться про вимкнення, попередження користувачів на початку розділу). Можна знайти ще багато книг для професіоналів, які висвітлюють це.
Ні.
Провідник не викликає цю команду, коли ви вимикаєтесь із меню "Пуск"
Вимкнення системи можливо за допомогою дзвінка API Win32 (у відповіді JdeBP надаються чудові деталі щодо цього, якщо зацікавлено). Команда - це просто зручний спосіб зробити це зі скрипту, запланованого завдання або діалогового вікна «Виконати».
shutdown.exeнавіть не робить витонченого відключення.
shutdownяке запитуючий спочатку робив. (Ці частини) інсталятори часто записуються компільованими мовами, які просто викликають API Win32, до речі.
Як пояснив ultrasawblade (upvote), відключення системи - це виклик Win32 API для: ExitWindowsEx
У посиланні також є приклад того, як здійснити відключення від C. Також це можна зробити з C # за допомогою P / Invoke (Platform Invoke). pinvoke.net має купу підписів, доступних для використання: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
Це не обов'язково. shutdown.exeце лише утиліта для вимкнення локального або віддаленого комп’ютера. Схоже , shutdown.exeВИКОРИСТОВУЄ Native API «S NtShutdownsystem. У той час як Windows використовує ExitWindowsEx( як уже згадувалося ).