จำเป็นต้องปิดระบบ shutdown.exe หรือไม่


36

C:\windows\system32\shutdown.exeจำเป็นต้องใช้ไฟล์ในการปิดเครื่องหรือรีสตาร์ท Windows หรือไม่


16
ลองเปลี่ยนชื่อเป็นอย่างอื่นแล้วดู
martineau

10
@MukulKumar คนที่ต้องการทราบถึงผลกระทบและรู้ว่าพวกเขาสามารถย้อนกลับได้อย่างง่ายดายมาก?
Jon Bentley

8
@theGreenCabbage: คุณจำเป็นต้องมีปัญหาshutdown -s -t 0- ธรรมดาshutdownแสดงความช่วยเหลือเท่านั้น
LawrenceC

9
การถอดปลั๊กคอมพิวเตอร์ควรปิดเครื่องโดยไม่คำนึงถึงชื่อไฟล์ใด ๆ
David Starkey

7
@DavidStarkey: "ปิด" และ "ปิด" ไม่ใช่สิ่งเดียวกัน
การแข่งขัน Lightness กับโมนิก้า

คำตอบ:


31

คำถามของคุณแน่นอนมาจากคำตอบของคุณที่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งานหลักของการประมวลผลคำขอปิดระบบรอตัดบัญชี

อ่านเพิ่มเติม

  • Jonathan de Boyne Pollard (2006) ของ Windows NT กระบวนการ คำตอบที่ได้รับบ่อย
  • shutdown. FreeBSD 9.2 หน้าคู่มือ 2013/03/19
  • shutdown. หน้าคู่มือsystemd 2013. Freedesktop.org
  • shutdown. หน้าคู่มือupstart 2552. Canonical Ltd.
  • InitiateSystemShutdownEx. MSDN บริษัท ไมโครซอฟต์.
  • ExitWindowsEx. MSDN บริษัท ไมโครซอฟต์.
  • REBOOT. รับความช่วยเหลือจาก Command / TCC ซอฟต์แวร์ JP

1
คุณเป็นผู้ตอบที่สมเหตุสมผล! ฉันชอบวิธีที่คุณย้อนกลับไปสู่สถานการณ์จริงผ่านโปรไฟล์ของฉัน
Mukul Kumar

โปรดทราบว่าในระบบ Linux shutdownคำสั่งไม่เกี่ยวข้องกับกระบวนการปิดระบบทั้งหมด ในขณะที่มันอาจส่งข้อความเตือนหรือสัมผัส / เรียกใช้ / nologin ทั้งหมดที่เกี่ยวข้องกับการปิดระบบจริงคือการส่งคำสั่งที่เหมาะสมเพื่อ systemd, init, ฯลฯ และออกจาก กระบวนการเริ่มต้นหรือ systemd การเปลี่ยนที่ทันสมัยทำงานจริง ๆ ของการปิดระบบ
Michael Hampton

ไม่เอ็มแฮมป์ตันส่งข้อความและหยุดการเข้าสู่ระบบเป็นส่วนที่เต็มเปี่ยมของกระบวนการปิดระบบเต็มรูปแบบ อย่าไปคิดว่ามันหายไปอย่างน่าอัศจรรย์กับ Linux หน้าคู่มือสำหรับ Linux สองตัวshutdownนั้นอยู่ตรงหน้าคุณ คิดว่าผิดเหมือนเรื่องไร้สาระในIntroduction to Linuxที่ TLDP ซึ่งกล่าวว่า "UNIX ไม่ได้ถูกปิด" แน่นอนว่า UNIX นั้นต้องปิดตัวลงและมีหนังสือมากมายในช่วง 40 ปีที่ผ่านมาสำหรับมืออาชีพ UNIX ที่ครอบคลุมขั้นตอนทั้งหมดพร้อมข้อความเตือนผู้ใช้ในขั้นตอนที่ 1
JdeBP

มีแม้กระทั่งหนังสือสำหรับมืออาชีพ Linux ฉันจะเสียบคู่มือการศึกษา LPICของ Rod Smith ซึ่งมีshutdownหน้า 22 แต่มันไม่ได้อยู่ในห้องสมุดของฉัน ขออภัย M. Smith (-: ห้องสมุดของฉันมีการอ้างอิง SVR5ของ Coffin (ขั้นตอนการเตือนผู้ใช้ที่อธิบายไว้ในหน้า 355 และ 683), คู่มือผู้ดูแลระบบ SCO UNIX (คำเตือนผู้ใช้เป็นการปิดขั้นตอนแรกในหน้า 52–53) และแม้กระทั่ง Fielder / การดูแลระบบ UNIXของฮันเตอร์(บทที่ 6 ทั้งหมดเกี่ยวกับการปิดระบบพร้อมเตือนผู้ใช้ในตอนต้นของบท) สามารถพบหนังสืออีกมากมายสำหรับมืออาชีพที่ครอบคลุมเรื่องนี้
JdeBP

55

เลขที่

Explorer ไม่เรียกคำสั่งนี้เมื่อคุณปิดจากเมนู Start

การปิดระบบเป็นไปได้ด้วยการเรียก Win32 API (คำตอบของ @ JdeBP ให้รายละเอียดที่ดีเกี่ยวกับสิ่งนั้นหากสนใจ) คำสั่งเป็นวิธีที่สะดวกในการทำจากสคริปต์งานที่กำหนดเวลาไว้หรือไดอะล็อก Run


ที่จริงแล้วshutdown.exeไม่ได้ปิดตัวเองอย่างสง่างามด้วยซ้ำ
kinokijuf

ระวังด้วยคำตอบนั้น! Explorer ไม่ได้เรียกคำสั่งนั้น แต่กระบวนการอื่น ๆ ที่ปิดหรือรีสตาร์ท windows ทำได้: และไม่ใช่แค่ 'วิธีที่สะดวกในการทำ' หากสคริปต์หรือภารกิจที่กำหนดไว้เป็นตัวติดตั้งหรืองานบำรุงรักษาตามกำหนดเวลาจาก sysadmin ของคุณ
Nigel Heffernan

1
นั่นไม่ได้ทำให้ "จำเป็น", ไนล์ ดูบริบทของคำถาม (ซึ่งไม่ได้อยู่ในคำถาม แต่อยู่ในคำตอบของฉันและสิ่งที่ชี้ไปที่นั่น) สำหรับการโต้แย้งที่ถามถูกตั้งคำถามและคำสั่งเกี่ยวกับการshutdownที่ผู้ถามทำเดิม ตัวติดตั้ง (ส่วนเหล่านี้) มักเขียนในภาษาที่คอมไพล์ซึ่งเพิ่งเรียก Win32 API ตามวิธี
JdeBP

8

ตามที่อธิบายโดย ultrasawblade (upvote) การปิดระบบคือการเรียก Win32 API ไปที่: ExitWindowsEx

ลิงก์ยังมีตัวอย่างเกี่ยวกับวิธีใช้การปิดระบบจาก C นอกจากนี้คุณสามารถทำได้จาก C # โดยใช้ P / Invoke (Platform Invoke) pinvoke.net มีกลุ่มของลายเซ็นที่พร้อมใช้งาน: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html


4

มันไม่จำเป็น shutdown.exeเป็นเพียงยูทิลิตี้ในการปิดเครื่องคอมพิวเตอร์หรือระยะไกล ดูเหมือนว่าshutdown.exeการนำมาใช้ประโยชน์API พื้นเมืองNtShutdownsystem 's ในขณะที่ Windows ใช้ExitWindowsEx( ดังกล่าวแล้ว )

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.