Jak już kinokijufpowiedziano, Windows nie jest Uniksem. W systemach Unices i Linux shutdownjest rzeczywiście zaangażowany w proces pełnego zamykania systemu. Jest to program, który wysyła regularne komunikaty ostrzegawcze do zalogowanych użytkowników i zapisuje /run/nologinplik, aby zapobiec dalszemu logowaniu na krótką chwilę przed planowanym czasem wyłączenia.
W systemie Windows NT tak nie jest.
Akcja „Zamknij” na „przycisku zasilania” w menu Start Eksploratora Windows, opcja menu „Zamknij” w Menedżerze zadań, REBOOT /Sw TCC lub Take Command oraz w innych aplikacjach, które umożliwiają zamknięcie systemu, wszystkie inicjują zamknięcie przez bezpośrednie wywołanie jednego z dwóch wywołań API Win32: InitiateSystemShutdownEx()lub ExitWindowsEx(). Nie robią rzeczy pośrednio, uruchamiając shutdownprogram. (To w rzeczywistości wymaga więcej kodu niż tylko wywołanie wywołania Win32 API). shutdownProgram, gdy robi się lokalne zamknięcie, wywołuje również te same wywołania Win32 API.
To rzeczywiście winlogon, csrssi smssże są programy, które zamknąć system Windows NT. W szczególności jest winlogonto główna praca przetwarzania odroczonych żądań zamknięcia.
Jesteś naprawdę rozsądnym odbiorcą! Podobał mi się sposób, w jaki odniosłeś się do prawdziwej sytuacji w moim profilu.
Mukul Kumar,
Zauważ, że w systemach Linux shutdownpolecenie to wcale nie bierze udziału w procesie pełnego zamykania; podczas gdy może wysyłać komunikaty ostrzegawcze lub dotykać / uruchamiać / nologin, wszystko, co robi w związku z faktycznym zamknięciem, to wysłanie odpowiedniej komendy do systemd, init itp. i wyjście. Proces inicjowania lub jego nowoczesny system zastępczy faktycznie powoduje zamknięcie systemu.
Michael Hampton
Nie, M. Hampton, wysyłanie wiadomości i zatrzymywanie logowania to pełnoprawna część procedury pełnego zamykania. Nie myśl, że w magiczny sposób odszedł z Linuksem. Strony podręcznika dla dwóch Linuksów shutdownsą tuż przed tobą. Myślenie, że jest tak błędne, jak nonsens we Wstępie do Linuksa na TLDP, który mówi, że „UNIX nie został zamknięty.” UNIX rzeczywiście został stworzony, aby zostać zamknięty, aw ciągu ostatnich 40 lat dla profesjonalistów UNIX było całkiem sporo książek, które opisują całą procedurę, z ostrzeżeniami dla użytkowników jako krok nr 1.
JdeBP
Są nawet książki dla profesjonalistów z Linuksa. Podłączę LPIC Study Guide Rod Smitha , który znajduje się shutdownna stronie 22, ale nie ma go w mojej bibliotece. Przepraszam, M. Smith. (-: Moja biblioteka ma takie Coffin's SVR5 Reference (ostrzeżenie dla użytkowników opisane na stronach 355 i 683), SCO UNIX System Administrator Guide (ostrzeżenia dla użytkowników jako pierwsze zamknięcie na stronach 52–53), a nawet Fieldera / Hunter UNIX System Administration (cały rozdział 6 dotyczy zamykania systemu, z ostrzeżeniem dla użytkowników na początku rozdziału). Można znaleźć wiele innych książek dla profesjonalistów zajmujących się tym
tematem
55
Nie.
Eksplorator nie wywołuje tego polecenia po zamknięciu z menu Start.
Zamykanie systemu jest możliwe dzięki wywołaniu Win32 API (odpowiedź @ JdeBP zawiera szczegółowe informacje na ten temat, jeśli są zainteresowani). Polecenie jest po prostu wygodnym sposobem na zrobienie tego ze skryptu, zaplanowanego zadania lub okna dialogowego Uruchom.
W rzeczywistości shutdown.exenawet nie robi wdzięcznego zamknięcia.
kinokijuf
Ostrożnie z tą odpowiedzią! Eksplorator nie wywołuje tego polecenia, ale robią to inne procesy, które zamykają lub ponownie uruchamiają system Windows: i nie jest to tylko „wygodny sposób na zrobienie tego”, jeśli skrypt lub zaplanowane zadanie jest instalatorem lub zaplanowanym zadaniem konserwacji od administratora systemu.
Nigel Heffernan
1
To nie czyni go „koniecznym”, Nile. Zobacz kontekst pytania (które nie jest zawarte w pytaniu, ale znajduje się w mojej odpowiedzi i o co tam chodzi) w celu obalenia, że pytający zadawał pytanie, oraz oświadczenie o shutdowntym, że pytający pierwotnie wypowiedział się. (Te części) instalatorów są często pisane w skompilowanych językach, które, nawiasem mówiąc, wywołują Win32 API.
JdeBP
8
Jak wyjaśniono w ultrasawblade (upvote), zamknięcie systemu to wywołanie Win32 API do: ExitWindowsEx
shutdown -s -t 0
- zwykłyshutdown
wyświetla tylko pomoc.Odpowiedzi:
Twoje pytanie pochodzi oczywiście z Twojej odpowiedzi na stronie https://codegolf.stackexchange.com/a/24011/18907 , w szczególności z
kinokijuf
komentarza do pierwszej wersji odpowiedzi.Jak już
kinokijuf
powiedziano, Windows nie jest Uniksem. W systemach Unices i Linuxshutdown
jest rzeczywiście zaangażowany w proces pełnego zamykania systemu. Jest to program, który wysyła regularne komunikaty ostrzegawcze do zalogowanych użytkowników i zapisuje/run/nologin
plik, aby zapobiec dalszemu logowaniu na krótką chwilę przed planowanym czasem wyłączenia.W systemie Windows NT tak nie jest.
Akcja „Zamknij” na „przycisku zasilania” w menu Start Eksploratora Windows, opcja menu „Zamknij” w Menedżerze zadań,
REBOOT /S
w TCC lub Take Command oraz w innych aplikacjach, które umożliwiają zamknięcie systemu, wszystkie inicjują zamknięcie przez bezpośrednie wywołanie jednego z dwóch wywołań API Win32:InitiateSystemShutdownEx()
lubExitWindowsEx()
. Nie robią rzeczy pośrednio, uruchamiającshutdown
program. (To w rzeczywistości wymaga więcej kodu niż tylko wywołanie wywołania Win32 API).shutdown
Program, gdy robi się lokalne zamknięcie, wywołuje również te same wywołania Win32 API.To rzeczywiście
winlogon
,csrss
ismss
że są programy, które zamknąć system Windows NT. W szczególności jestwinlogon
to główna praca przetwarzania odroczonych żądań zamknięcia.Dalsza lektura
shutdown
. Strony podręcznika FreeBSD 9.2 . 19.03.2013.shutdown
.systemd
strony podręcznika . 2013. Freedesktop.org.shutdown
.upstart
strony podręcznika . 2009. Canonical Ltd.InitiateSystemShutdownEx
. MSDN. Korporacja Microsoft.ExitWindowsEx
. MSDN. Korporacja Microsoft.REBOOT
. Weź pomoc w zakresie poleceń / TCC. Oprogramowanie JP.źródło
shutdown
polecenie to wcale nie bierze udziału w procesie pełnego zamykania; podczas gdy może wysyłać komunikaty ostrzegawcze lub dotykać / uruchamiać / nologin, wszystko, co robi w związku z faktycznym zamknięciem, to wysłanie odpowiedniej komendy do systemd, init itp. i wyjście. Proces inicjowania lub jego nowoczesny system zastępczy faktycznie powoduje zamknięcie systemu.shutdown
są tuż przed tobą. Myślenie, że jest tak błędne, jak nonsens we Wstępie do Linuksa na TLDP, który mówi, że „UNIX nie został zamknięty.” UNIX rzeczywiście został stworzony, aby zostać zamknięty, aw ciągu ostatnich 40 lat dla profesjonalistów UNIX było całkiem sporo książek, które opisują całą procedurę, z ostrzeżeniami dla użytkowników jako krok nr 1.shutdown
na stronie 22, ale nie ma go w mojej bibliotece. Przepraszam, M. Smith. (-: Moja biblioteka ma takie Coffin's SVR5 Reference (ostrzeżenie dla użytkowników opisane na stronach 355 i 683), SCO UNIX System Administrator Guide (ostrzeżenia dla użytkowników jako pierwsze zamknięcie na stronach 52–53), a nawet Fieldera / Hunter UNIX System Administration (cały rozdział 6 dotyczy zamykania systemu, z ostrzeżeniem dla użytkowników na początku rozdziału). Można znaleźć wiele innych książek dla profesjonalistów zajmujących się tymNie.
Eksplorator nie wywołuje tego polecenia po zamknięciu z menu Start.
Zamykanie systemu jest możliwe dzięki wywołaniu Win32 API (odpowiedź @ JdeBP zawiera szczegółowe informacje na ten temat, jeśli są zainteresowani). Polecenie jest po prostu wygodnym sposobem na zrobienie tego ze skryptu, zaplanowanego zadania lub okna dialogowego Uruchom.
źródło
shutdown.exe
nawet nie robi wdzięcznego zamknięcia.shutdown
tym, że pytający pierwotnie wypowiedział się. (Te części) instalatorów są często pisane w skompilowanych językach, które, nawiasem mówiąc, wywołują Win32 API.Jak wyjaśniono w ultrasawblade (upvote), zamknięcie systemu to wywołanie Win32 API do: ExitWindowsEx
Łącze zawiera również przykład implementacji zamykania z C. Ponadto można to zrobić z C # przy użyciu P / Invoke (Platform Invoke). pinvoke.net ma do dyspozycji kilka podpisów: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
źródło
To nie jest konieczne.
shutdown.exe
to tylko narzędzie do zamykania komputera lokalnego lub zdalnego. Wygląda na toshutdown.exe
wykorzystuje Native API „sNtShutdownsystem
. Podczas gdy Windows używaExitWindowsEx
( jak już wspomniano ).źródło