Solved

Scheduled reboot

Posted on 2012-03-30
13
268 Views
Last Modified: 2012-04-04
I am creating a windows service that should run every hour, check database for a reboot date and time and schedule reboot based on the datetime it finds in the database.

I can use Windows scheduler to schedule my windows service and I took care of the data retrieval part. Now I am trying to find the best way to schedule a reboot based on the retrieved value.

Should I use the registry HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer? if so, could you give me an example?

or should i use System.Diagnostics.Process.Start("ShutDown", "/r")?

Also before a reboot I want to show the user a messagebox warning.

Can anyone help?
0
Comment
Question by:YZlat
  • 6
  • 6
13 Comments
 
LVL 34

Assisted Solution

by:Paul MacDonald
Paul MacDonald earned 500 total points
ID: 37788890
System.Diagnostics.Process.Start("ShutDown", "/r ")

A message box should pop up to warn the user a scheduled shutdown is taking place.  You can use the /t switch to specify how long before the shutdown takes place.
0
 
LVL 6

Expert Comment

by:-tjs
ID: 37788978
Possible example command line if I wanted to reboot a system called MyServer1 at 11:00pm today:
schtasks /create /tn "Reboot Once" /tr "shutdown /r /f /t 1 /d p:0:0" /sc once /st 23:00 /s MyServer1

This creates a scheduled task on MyServer1 that runs only one time at 11:00pm (/st) and executes the local shutdown command with a 1 second warning and enters a bogus restart reason (/d p:0:0) so the admin isn't prompted to enter a reason when the reboot is done.
0
 
LVL 35

Author Comment

by:YZlat
ID: 37788994
paulmacd, can you give me some examples?

-tjs, I need examples using .NET
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 34

Accepted Solution

by:
Paul MacDonald earned 500 total points
ID: 37789029
System.Diagnostics.Process.Start("ShutDown", "/r /t 300 ")

...where the /t 300 tells the system to countdown for 5 minutes (300 seconds) before performing the reboot.
0
 
LVL 35

Author Comment

by:YZlat
ID: 37789041
But how can I schedule it at a particular date and time?

For instance if the date retrieved from the database is April 1st 11:00am, how can I schedule the reboot at that time?
0
 
LVL 34

Assisted Solution

by:Paul MacDonald
Paul MacDonald earned 500 total points
ID: 37789159
Ah, that's different altogether.

Try something like this (from http://stackoverflow.com/questions/206323/how-to-execute-command-line-in-c-get-std-out-results):
//Create process
System.Diagnostics.Process pProcess = new System.Diagnostics.Process();  

//strCommand is path and file name of command to run
pProcess.StartInfo.FileName = strCommand;  

//strCommandParameters are parameters to pass to program pProcess.StartInfo.Arguments = strCommandParameters;  pProcess.StartInfo.UseShellExecute = false;  

//Set output of program to be written to process output stream pProcess.StartInfo.RedirectStandardOutput = true;    

//Optional
pProcess.StartInfo.WorkingDirectory = strWorkingDirectory;  

//Start the process
pProcess.Start();  

//Get program output
string strOutput = pProcess.StandardOutput.ReadToEnd();  

//Wait for process to finish
pProcess.WaitForExit();


... and use the AT command to run the SHUTDOWN /R command
(info on AT command: http://support.microsoft.com/kb/313565)
Your AT command will look something like this:
at [time] /next:[dayofmonth] cmd /c "shutdown /r"

Note that your strCommand in the code sample above will be "AT" and strCommandParameters will be everything else.  

As a matter of full disclosure, this isn't something I've tested myself.
0
 
LVL 35

Author Comment

by:YZlat
ID: 37795863
paulmacd, I have searched everywhere but cannot find AT command or switch anywhere
0
 
LVL 34

Assisted Solution

by:Paul MacDonald
Paul MacDonald earned 500 total points
ID: 37795923
0
 
LVL 35

Author Comment

by:YZlat
ID: 37801057
paulmacd, I am working on using

System.Diagnostics.Process.Start("ShutDown", "/r /t 300 ")

as you suggested. I get a message displayed that tells me how much time left till shutdown. How can I add a snooze button to it?
0
 
LVL 34

Assisted Solution

by:Paul MacDonald
Paul MacDonald earned 500 total points
ID: 37801147
Not as such.  

You could ask the user before you start the shutdown, or you could offer the user the opportunity to cancel the shutdown (shutdown /a).
0
 
LVL 35

Author Comment

by:YZlat
ID: 37802380
Thank you. I am gonna give that a try
0
 
LVL 35

Author Closing Comment

by:YZlat
ID: 37805867
thanks for your help, you pointed me in the right direction
0
 
LVL 34

Expert Comment

by:Paul MacDonald
ID: 37805884
Very happy to help.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Where is this file? 3 32
Get month and date in a format 4 44
C# Windows app updating JSON file error. 9 38
Check only one toolstripmenu item 7 10
In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

685 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question