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( ดังกล่าวแล้ว )