Search code examples
c#windowscommand-linestandbysleep-mode

How to initiate standby/sleep from command-line?


I have found a lot of info about how to shut down computer, put it in hibernation etc via the command line, however, any tips i have read about getting it to sleep as it does from the start-menu has so far not worked properly.

I would like a command that puts the computer in a light standby mode where a keypress would make the computer wake again, and not in hibernation. Does anyone know of this?

AFAIK, rundll32.exe powrprof.dll,SetSuspendState 0,1,0 does NOT put the computer to sleep / standby in all cases, and is as such not appropriate for my use...

Thanks, Araho


Solution

  • Thanks to @minitech, I finally got it working. Leaving this here for all who want to know the answer, and giving two examples, one in direct command-line and one in Visual C#:

    Add elevated priveleges to your app:

    • In other words, in command-line, start it as Administrator.
    • In Visual C#, which is what I'm using, add a manifest file to the project, and edit the "requestedExecutionLevel"-element to the following:

    Then run the following commands:

    • In commandline:

      1. "powercfg -hibernate off" - This shuts off the hibernation mode possibility.

      2. rundll32.exe powrprof.dll,SetSuspendState 0,1,0 - This makes the computer sleep.

      3. powercfg -hibernate on - This allows the hibernation mode to again be activated.

    • In Visual C#, use the following code:

      1. System.Diagnostics.Process.Start("powercfg", "-hibernate off"); // Turn off hibernation mode setting.

      2. System.Diagnostics.Process.Start("rundll32.exe", "powrprof.dll,SetSuspendState 0,1,0"); // Send the computer to sleep

      3. System.Diagnostics.Process.Start("powercfg", "-hibernate on"); // Turn on hibernation mode setting after waking computer.

    It is very important to remember to add Administrator priveleges, or it will make the computer hibernate, which takes forever.

    Araho