Shutdown Computing

In window, if i use a command: "shutdown -t 00 -s" then it will shutdown my computer.

Now, I want to use that command into C# program, How to?
Or have any another way to replace?

Thanks!
ttnhatanAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
monarch_ilhanConnect With a Mentor Commented:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

namespace TestShutDown
{
   

        [StructLayout(LayoutKind.Sequential, Pack=1)]
        internal struct TokPriv1Luid
        {
        public int Count;
        public long Luid;
        public int Attr;
        }
  public partial class Form1 : Form
    {
        [DllImport("kernel32.dll", ExactSpelling=true) ]
        internal static extern IntPtr GetCurrentProcess();

        [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]
        internal static extern bool OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok );

        [DllImport("advapi32.dll", SetLastError=true) ]
        internal static extern bool LookupPrivilegeValue( string host, string name, ref long pluid );

        [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]
        internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool disall,
        ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen );

        [DllImport("user32.dll", ExactSpelling=true, SetLastError=true) ]
        internal static extern bool ExitWindowsEx( int flg, int rea );

        internal const int SE_PRIVILEGE_ENABLED = 0x00000002;
        internal const int TOKEN_QUERY = 0x00000008;
        internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
        internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
        internal const int EWX_LOGOFF = 0x00000000;
        internal const int EWX_SHUTDOWN = 0x00000001;
        internal const int EWX_REBOOT = 0x00000002;
        internal const int EWX_FORCE = 0x00000004;
        internal const int EWX_POWEROFF = 0x00000008;
        internal const int EWX_FORCEIFHUNG = 0x00000010;

 
        public Form1()
        {
            InitializeComponent();
        }
      private void DoExitWin(int flg)
      {
          bool ok;
          TokPriv1Luid tp;
          IntPtr hproc = GetCurrentProcess();
          IntPtr htok = IntPtr.Zero;
          ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
          tp.Count = 1;
          tp.Luid = 0;
          tp.Attr = SE_PRIVILEGE_ENABLED;
          ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
          ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
          ok = ExitWindowsEx(flg, 0);
      }

        private void button1_Click(object sender, EventArgs e)
        {
          DoExitWin(EWX_POWEROFF);
        }
}
}
0
 
kirankumar_gouraCommented:
Try this out ...
Process.Start("shutdown", "-t 00 -s");
0
All Courses

From novice to tech pro — start learning today.