Click here to Skip to main content
15,891,136 members
Articles / Programming Languages / Visual Basic

Shutting Down Your Computer

Rate me:
Please Sign up or sign in to vote.
2.21/5 (13 votes)
29 Nov 2006CPOL2 min read 60.1K   530   30   12
This article will show you a simple way to shutdown, restart, or log off your computer.

Sample Image - Shutdown Computer.jpg

Introduction

Some programs have a "Reboot your computer for changes to take affect" option after installing updates or changing settings. But how do they reboot your computer? It's very simple. You just call "C:\WINDOWS\System32\ShutDown.exe", which is the same as typing "Shutdown" in the Command Prompt (in Windows XP).

Arguments

Here is a list of all the arguments used:

  • -i: Display the GUI interface
  • -l: Log off
  • -s: Shutdown the computer
  • -r: Shutdown and restart the computer
  • -a: Abort a system shutdown
  • -f: Forces all windows to close
  • -t xx: Set timeout for shutdown to xx seconds

Starting the Shutdown Process

Start the shutdown process by calling ShutDown, like so:

C#
System.Diagnostics.Process.Start("ShutDown", "/s") 'Shutdown

And to abort the shutdown:

C#
System.Diagnostics.Process.Start("ShutDown", "/a")

This is very important to have when testing your app, because otherwise there is no way to stop the shutdown process.

Shutdown Dialog

After you start the shutdown/restart process, a dialog will appear with a warning to close all running processes before the computer shuts down.

Shutdown Dialog

This screen is required to give users a warning that their computer is about to be shutdown so they can close all running processes, but this can be disabled by using the -f argument, which forces all windows to close.

GUI Interface

This is the GUI interface which allows advanced customization of the shutdown process. For example, you can set which computers to shutdown, the process for each computer (shutdown, restart etc.), set a shutdown timer, and much more.

GUI Interface

Conclusion

Overall, I don't really like the shutdown process, it's not very customizable. I think that would make a good addition to the .NET Framework, which would allow more control. But if you just want a simple function to restart your computer, this is perfect.

Also, using this shutdown example will not work in Windows ME or below, only in Windows XP. And, administrators can block unauthorized users from shutting down the computer, which can cause problems.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralMy vote of 2 Pin
Whockie13-Oct-09 8:14
Whockie13-Oct-09 8:14 
Questionhow can i use anther programm in my project? Pin
shereenbasher8-Aug-07 11:58
shereenbasher8-Aug-07 11:58 
GeneralReverse Method... Pin
shein4-Feb-07 17:11
shein4-Feb-07 17:11 
GeneralRe: Reverse Method... Pin
MatrixCoder5-Feb-07 4:49
MatrixCoder5-Feb-07 4:49 
GeneralNot true! Pin
Galatei30-Nov-06 3:38
Galatei30-Nov-06 3:38 
GeneralRe: Not true! Pin
MatrixCoder4-Apr-07 17:56
MatrixCoder4-Apr-07 17:56 
GeneralDoesn't work on some PCs Pin
Rajat Kaushish30-Nov-06 1:51
Rajat Kaushish30-Nov-06 1:51 
GeneralRe: Doesn't work on some PCs Pin
Christian Klauser30-Nov-06 2:24
Christian Klauser30-Nov-06 2:24 
GeneralRe: Doesn't work on some PCs Pin
Lito30-Nov-06 3:11
Lito30-Nov-06 3:11 
GeneralRe: Doesn't work on some PCs Pin
Rajat Kaushish30-Nov-06 5:07
Rajat Kaushish30-Nov-06 5:07 
AnswerRe: Doesn't work on some PCs Pin
Rafael Nicoletti30-Nov-06 6:08
Rafael Nicoletti30-Nov-06 6:08 
AnswerRe: Doesn't work on some PCs Pin
Rajat Kaushish6-Dec-06 23:11
Rajat Kaushish6-Dec-06 23:11 
Well, as I mentioned before, all PCs were running Win XP SP2, however some of them just wouldn't shutdown using "shutdown.exe -s"

I did some googling on this, found the cause & then the workaround:

Cause:
The "shutdown.exe" command-line utility in Windows XP has a LUA bug that prevents non-admin users from using it to shut down or restart the computer.

Workaround:
Grant "INTERACTIVE" the SeRemoteShutdownPrivilege.
How to do it (requires admin privileges): Open Administrative Tools \ "Local Security Settings". Navigate to Security Settings \ Local Policies \ User Rights Assignment. Double-click "Force shutdown from a remote system" in the right pane. Click "Add User or Group". Enter the name INTERACTIVE in the text box and click "Check names", then click OK, and OK again.

Remarks:
Does granting this privilege this way open up the computer to remote attack? No. The "INTERACTIVE" SID appears in the user's token only in the interactive logon session. Remotely invoked code does not have INTERACTIVE in its token.

Source:
http://blogs.msdn.com/aaron_margosis/archive/2006/01/27/518214.aspx[^]

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.