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 Explorer ตัวเลือกเมนู "ปิดเครื่อง" ใน Task Manager REBOOT /S
ใน TCC หรือ Take Command และโปรแกรมแอปพลิเคชันอื่น ๆ ที่อนุญาตให้คุณปิดระบบลงทุกครั้ง โดยตรงโทรหนึ่งในสองเรียก Win32 API: หรือInitiateSystemShutdownEx()
ExitWindowsEx()
พวกเขาไม่ได้ทำอะไรทางอ้อมด้วยการรันshutdown
โปรแกรม (ที่จริงต้องมีรหัสเพิ่มเติมที่ต้องทำมากกว่าเพียงแค่เรียกการเรียก Win32 API) shutdown
โปรแกรมเมื่อหนึ่งกำลังทำการปิดเครื่องในท้องถิ่นเรียก Win32 API เหล่านั้นเรียกเช่นกัน
เป็นจริงwinlogon
, csrss
และsmss
ที่มีโปรแกรมที่ปิดระบบ Windows NT โดยเฉพาะอย่างยิ่งมันเป็นwinlogon
งานหลักของการประมวลผลคำขอปิดระบบรอตัดบัญชี
shutdown
. FreeBSD 9.2 หน้าคู่มือ 2013/03/19shutdown
. หน้าคู่มือsystemd
2013. Freedesktop.orgshutdown
. หน้าคู่มือupstart
2552. Canonical Ltd.InitiateSystemShutdownEx
. MSDN บริษัท ไมโครซอฟต์.ExitWindowsEx
. MSDN บริษัท ไมโครซอฟต์.REBOOT
. รับความช่วยเหลือจาก Command / TCC ซอฟต์แวร์ JPshutdown
คำสั่งไม่เกี่ยวข้องกับกระบวนการปิดระบบทั้งหมด ในขณะที่มันอาจส่งข้อความเตือนหรือสัมผัส / เรียกใช้ / nologin ทั้งหมดที่เกี่ยวข้องกับการปิดระบบจริงคือการส่งคำสั่งที่เหมาะสมเพื่อ systemd, init, ฯลฯ และออกจาก กระบวนการเริ่มต้นหรือ systemd การเปลี่ยนที่ทันสมัยทำงานจริง ๆ ของการปิดระบบ
shutdown
นั้นอยู่ตรงหน้าคุณ คิดว่าผิดเหมือนเรื่องไร้สาระในIntroduction to Linuxที่ TLDP ซึ่งกล่าวว่า "UNIX ไม่ได้ถูกปิด" แน่นอนว่า UNIX นั้นต้องปิดตัวลงและมีหนังสือมากมายในช่วง 40 ปีที่ผ่านมาสำหรับมืออาชีพ UNIX ที่ครอบคลุมขั้นตอนทั้งหมดพร้อมข้อความเตือนผู้ใช้ในขั้นตอนที่ 1
shutdown
หน้า 22 แต่มันไม่ได้อยู่ในห้องสมุดของฉัน ขออภัย M. Smith (-: ห้องสมุดของฉันมีการอ้างอิง SVR5ของ Coffin (ขั้นตอนการเตือนผู้ใช้ที่อธิบายไว้ในหน้า 355 และ 683), คู่มือผู้ดูแลระบบ SCO UNIX (คำเตือนผู้ใช้เป็นการปิดขั้นตอนแรกในหน้า 52–53) และแม้กระทั่ง Fielder / การดูแลระบบ UNIXของฮันเตอร์(บทที่ 6 ทั้งหมดเกี่ยวกับการปิดระบบพร้อมเตือนผู้ใช้ในตอนต้นของบท) สามารถพบหนังสืออีกมากมายสำหรับมืออาชีพที่ครอบคลุมเรื่องนี้
เลขที่
Explorer ไม่เรียกคำสั่งนี้เมื่อคุณปิดจากเมนู Start
การปิดระบบเป็นไปได้ด้วยการเรียก Win32 API (คำตอบของ @ JdeBP ให้รายละเอียดที่ดีเกี่ยวกับสิ่งนั้นหากสนใจ) คำสั่งเป็นวิธีที่สะดวกในการทำจากสคริปต์งานที่กำหนดเวลาไว้หรือไดอะล็อก Run
shutdown.exe
ไม่ได้ปิดตัวเองอย่างสง่างามด้วยซ้ำ
shutdown
ที่ผู้ถามทำเดิม ตัวติดตั้ง (ส่วนเหล่านี้) มักเขียนในภาษาที่คอมไพล์ซึ่งเพิ่งเรียก Win32 API ตามวิธี
ตามที่อธิบายโดย 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
การนำมาใช้ประโยชน์API พื้นเมืองNtShutdownsystem
's ในขณะที่ Windows ใช้ExitWindowsEx
( ดังกล่าวแล้ว )