Shutdown.exe có cần thiết để tắt Windows không?


36

Là tập tin C:\windows\system32\shutdown.execần thiết để tắt hoặc khởi động lại Windows?


16
Hãy thử đổi tên nó một cái gì đó khác và xem.
martineau

10
@MukulKumar Ai đó muốn tìm hiểu hiệu quả, và biết rằng họ có thể rất dễ dàng đảo ngược nó?
Jon Bentley

8
@theGreenCabbage: Bạn cần phát hành shutdown -s -t 0- một đơn giản shutdownchỉ hiển thị trợ giúp.
LawrenceC

9
Rút phích cắm máy tính sẽ tắt nó đi, bất kể tên tập tin nào.
David Starkey

7
@DavidStarkey: "Tắt" và "tắt" không phải là điều tương tự, mặc dù.
Cuộc đua nhẹ nhàng với Monica

Câu trả lời:


31

Câu hỏi của bạn tất nhiên bắt nguồn từ câu trả lời của bạn tại https://codegolf.stackexchange.com/a/24011/18907 , đặc biệt từ kinokijufnhận xét của bạn khi sửa đổi câu trả lời ban đầu của bạn.

Như đã kinokijufnói, Windows không phải là Unix. Trên Unices và Linux, shutdownthực sự có liên quan đến quá trình tắt máy hoàn toàn. Đây là chương trình gửi tin nhắn cảnh báo thường xuyên đến người dùng đã đăng nhập và ghi /run/nologintệp để ngăn đăng nhập thêm một thời gian ngắn trước thời gian tắt máy theo lịch trình.

Trên Windows NT, đây không phải là trường hợp.

Hành động "Tắt máy" trên "nút nguồn" trên menu Bắt đầu của Windows Explorer, tùy chọn menu "Tắt máy" trong Trình quản lý tác vụ, REBOOT /Strong TCC hoặc Lệnh, và các chương trình ứng dụng khác cho phép bạn tắt hệ thống tắt tất cả tắt máy bắt đầu bằng cách gọi trực tiếp một trong hai lệnh gọi API Win32: InitiateSystemShutdownEx()hoặc ExitWindowsEx(). Họ không làm những việc gián tiếp bằng cách chạy shutdownchương trình. (Điều đó thực sự cần nhiều mã để thực hiện hơn là chỉ gọi cuộc gọi API Win32.) shutdownChương trình, khi một người đang thực hiện tắt máy cục bộ, cũng gọi các cuộc gọi API Win32 tương tự.

Đó thực sự là winlogon, csrsssmssđó là những chương trình tắt Windows NT. Cụ thể, đó là winlogoncông việc chính của xử lý các yêu cầu tắt máy bị trì hoãn.

đọc thêm


1
Bạn thực sự là một người trả lời hợp lý! Tôi thích cách bạn truy trở lại tình hình thực tế thông qua hồ sơ của tôi.
Mukul Kumar

Lưu ý rằng trên các hệ thống Linux, shutdownlệnh hoàn toàn không liên quan đến quá trình tắt máy hoàn toàn; trong khi nó có thể gửi tin nhắn cảnh báo hoặc chạm / chạy / nologin, tất cả những gì nó làm liên quan đến việc thực sự tắt là gửi lệnh thích hợp tới systemd, init, v.v. và thoát. Quá trình init hoặc systemd thay thế hiện đại của nó thực sự làm công việc tắt hệ thống.
Michael Hampton

Không, M. Hampton, gửi tin nhắn và dừng đăng nhập là một phần hoàn chỉnh của quy trình tắt máy hoàn toàn. Đừng nghĩ rằng nó đã biến mất một cách kỳ diệu với Linux. Các trang hướng dẫn cho hai Linux shutdownđang ở ngay trước mặt bạn. Nghĩ rằng điều đó là sai trái như vô nghĩa trong Giới thiệu về Linux tại TLDP nói rằng "UNIX không được thực hiện để tắt". UNIX thực sự đã bị đóng cửa và có khá nhiều sách trong 40 năm qua dành cho các chuyên gia UNIX bao gồm toàn bộ quy trình, với các thông báo cảnh báo cho người dùng là bước # 1.
JdeBP

Thậm chí có sách cho các chuyên gia Linux. Tôi đã cắm Hướng dẫn học LPIC của Rod Smith , có shutdownở trang 22, nhưng nó không có trong thư viện của tôi. Xin lỗi, M. Smith. (-: Thư viện của tôi có những cầu thủ như Coffin của SVR5 tham khảo (những người sử dụng cảnh báo bước được mô tả trên các trang 355 và 683), một quản trị viên của SCO hệ thống UNIX Hướng dẫn (cảnh báo cho người sử dụng như tắt máy bước đi đầu tiên trên các trang 52-53), và thậm chí Fielder của / Quản trị hệ thống UNIX của Hunter (toàn bộ chương 6 nói về tắt máy, với cảnh báo người dùng ở đầu chương). Người ta có thể tìm thấy nhiều sách hơn cho các chuyên gia về vấn đề này.
JdeBP 15/03/2016

55

Không.

Explorer không gọi lệnh này khi bạn tắt từ menu Start.

Việc tắt hệ thống là có thể với lệnh gọi API Win32 (câu trả lời của @ JdeBP cung cấp chi tiết tuyệt vời về điều đó nếu quan tâm). Lệnh chỉ là một cách thuận tiện để thực hiện nó từ một kịch bản, tác vụ theo lịch trình hoặc hộp thoại Run.


Trên thực tế, shutdown.exethậm chí không làm một tắt máy duyên dáng.
kinokijuf

Cẩn thận với câu trả lời đó! Explorer không gọi lệnh đó, nhưng các quá trình khác tắt hoặc khởi động lại windows thì không: và đó không chỉ là 'cách thuận tiện để thực hiện' nếu tập lệnh hoặc tác vụ theo lịch trình là trình cài đặt hoặc tác vụ bảo trì theo lịch trình từ sysadmin của bạn.
Nigel Heffernan

1
Điều đó không làm cho nó "cần thiết", Nile. Xem ngữ cảnh của câu hỏi (không có trong câu hỏi, nhưng là trong câu trả lời của tôi và những gì được chỉ ra ở đó) cho phản bác mà người hỏi đang hỏi và tuyên bố về shutdowncâu hỏi ban đầu được đưa ra. Nhân tiện, các phần này của trình cài đặt thường được viết bằng các ngôn ngữ được biên dịch chỉ bằng cách gọi API Win32.
JdeBP

8

Như được giải thích bởi ultrasawblade (upvote), việc tắt hệ thống là một lệnh gọi API Win32 tới: ExitWindowsEx

Liên kết cũng có một ví dụ về cách thực hiện tắt máy từ C. Ngoài ra, bạn có thể thực hiện điều đó từ C # bằng cách sử dụng P / Gọi (Gọi nền tảng). pinvoke.net có sẵn một loạt các chữ ký để sử dụng: http://www.pinvoke.net/default.aspx/user32/exitwindTHERx.html


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.