谢谢了哪位大虾帮帮小弟吧,,,
具体就是在一个窗体上边按一个按钮之后就执行关机的动作,就行了。谢谢大侠们。。

解决方案 »

  1.   

    http://www.cnblogs.com/battler/archive/2005/03/19/121750.html
      

  2.   

    shutdown /pUsage: shutdown [/i | /l | /s | /r | /a | /p | /h | /e] [/f]
        [/m \\computer][/t xxx][/d [p:]xx:yy [/c "comment"]]    No args    Display help. This is the same as typing /?
        /?         Display help. This is the same as not typing any options
        /i         Display the graphical user interface (GUI).
                   This must be the first option
        /l         Log off. This cannot be used with /m or /d option
        /s         Shutdown the computer
        /r         Shutdown and restart the computer
        /a         Abort a system shutdown.
                   This can only be used during the time-out period
        /p         Turn off the local computer with no time-out or warning.
                   This can only be used with /d option
        /h         Hibernate the local computer.
                   This can only be used with the /f option
        /e         Document the reason for an unexpected shutdown of a computer
        /m \\computer Specify the target computer
        /t xxx     Set time-out period before shutdown to xxx seconds.
                   The valid range is 0-600, with a default of 30
        /c "comment" Comment on the reason for the restart or shutdown.
                   Maximum of 127 characters allowed
        /f         Force running applications to close without forewarning users
        /d [p:]xx:yy  Provide the reason for the restart or shutdown
                   p indicates that the restart or shutdown is planned
                   xx is the major reason number (positive integer less than 256)
                   yy is the minor reason number (positive integer less than 65536)Reasons on this computer:
    (E = Expected U = Unexpected P = planned, C = customer defined)
    Type    Major   Minor   Title U      0       0       Other (Unplanned)
    E       0       0       Other (Unplanned)
    E P     0       0       Other (Planned)
     U      0       5       Other Failure: System Unresponsive
    E       1       1       Hardware: Maintenance (Unplanned)
    E P     1       1       Hardware: Maintenance (Planned)
    E       1       2       Hardware: Installation (Unplanned)
    E P     1       2       Hardware: Installation (Planned)
      P     2       3       Operating System: Upgrade (Planned)
    E       2       4       Operating System: Reconfiguration (Unplanned)
    E P     2       4       Operating System: Reconfiguration (Planned)
      P     2       16      Operating System: Service pack (Planned)
            2       17      Operating System: Hot fix (Unplanned)
      P     2       17      Operating System: Hot fix (Planned)
            2       18      Operating System: Security fix (Unplanned)
      P     2       18      Operating System: Security fix (Planned)
    E       4       1       Application: Maintenance (Unplanned)
    E P     4       1       Application: Maintenance (Planned)
    E P     4       2       Application: Installation (Planned)
    E       4       5       Application: Unresponsive
    E       4       6       Application: Unstable
     U      5       15      System Failure: Stop error
    E       5       19      Security issue
     U      5       19      Security issue
    E P     5       19      Security issue
    E       5       20      Loss of network connectivity (Unplanned)
     U      6       11      Power Failure: Cord Unplugged
     U      6       12      Power Failure: Environment
      P     7       0       Legacy API shutdown
      

  3.   


    using System.Runtime.InteropServices;//要引用的类        [StructLayout(LayoutKind.Sequential,Pack=1)]
            internal struct TokPriv1Luid
            {
                public int Count;
                public long Luid;
                public int Attr;
            }
            [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_POWEROOF = 0x00000008;
            internal const int EWX_FORCEIFHUNG = 0x00000010;        private static 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);        }
      

  4.   


    using System;class Program
    {
        static void Main()
        {
            shutdown();
        }
        public static void shutdown()
        {
            System.Diagnostics.Process.Start("shutdown.exe","-s -t 0");
        }
    }
    立即关机的
      

  5.   


    System.Diagnostics.Process.Start("shutdown.exe","-s -t 0");把这段写在 按钮事件里面就行了 
      

  6.   

    可以在运行里面写 shutdown -s
      

  7.   

    你搜索下会有很多例子地
    一般都是调用API的
      

  8.   

    Process.Start("Shutdown.exe", " -s -t 0"); 
    [DllImport("user32.dll", EntryPoint = "ExitWindowsEx", CharSet = CharSet.Ansi)] 
            private static extern int ExitWindowsEx(int uFlags, int dwReserved); 
          public void A() 
            { 
                ExitWindowsEx(0, 0); 
            } 
      

  9.   

    3F
    /l        Log off. This cannot be used with /m or /d option 
    不懂英文???
      

  10.   

    Process p = new Process();                            p.StartInfo.FileName = "cmd.exe";                            p.StartInfo.RedirectStandardError = true;                            p.StartInfo.RedirectStandardInput = true;                            p.StartInfo.RedirectStandardOutput = true;                            p.StartInfo.UseShellExecute = false;                            p.Start();                            p.StandardInput.WriteLine("shutdown -p");                            p.StandardInput.WriteLine("Exit");                            p.WaitForExit();                            p.Close();
      

  11.   

    using System;
    using System.Diagnostics;class Program
    {
        static void Main()
        {
            shutdown();
        }
        public static void shutdown()
        {
            Console.WriteLine("after how many minutes need to shutdown?");
            int min = Console.Read();
            string time_option = Convert.ToString(min);
            string option1 = "-s -t ";
            string options = string.Concat(option1, time_option);
          //  System.Diagnostics.Process.Start("shutdown.exe", "-s -t 0");
            Process.Start("shutdown.exe", options);
        }
    }
      

  12.   

    咱也用API来做
    首先 Adjust 进程权限 为 关机的
    adjusttokenprivileges 然后ShutDownWindowEx
      

  13.   


    http://topic.csdn.net/u/20090617/16/4577bc05-1bcd-4d8b-8d8d-b68574126aba.html
      

  14.   

    http://topic.csdn.net/u/20090617/16/4577bc05-1bcd-4d8b-8d8d-b68574126aba.html
      

  15.   

    System.Diagnostics.Process.Start("shutdown.exe","-s -t 0");
    我是用这个
      

  16.   

     win+r  输入shutdown -s -t 10   这是10秒关机
    可以自己输入要关机的秒数 
      

  17.   

    EHEHE  就是这么简单哪!
    题外话哈,某些系统,例如网站,装好过后,shutdown cmd net msc regsvr32 regdit这些都是弄掉了的,程序都是以一个被授权的普通用户运行的,这个时候就确实是没有办法了哈 ,否则网管就可以回家吃自己了哈!!!
      

  18.   

    uisng System;
    using System.Runtime.InteropServices;
    class prower
    {
       [StructLayout(LayoutKind.Sequential, Pack = 1)]
        internal struct TokPriv1Luid
        {
            public int Count;
            public long Luid;
            public int Attr;
        }
        [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;
        private static 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);
        }}调用DoExitWin(EWX_SHUTDOWN);方法就可以了...
      

  19.   

    调用API吧,或者调用CMD命令执行SHUTDOWN(这个是我想的,不知道能实现不)
      

  20.   

    System.Diagnostics.Process.Start("shutdown.exe","-s -t 0"); 我是用这个的
      

  21.   

    我整理的关机类http://blog.csdn.net/null1/archive/2008/11/03/3208145.aspx
      

  22.   

    using System.Runtime.InteropServices;[StructLayout(LayoutKind.Sequential, Pack=1)] 
       internal struct TokPriv1Luid 
      { 
       public int Count; 
       public long Luid; 
       public int Attr; 
      } 
        [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;   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 ); 
      }   public void Reboot() 
      { 
       DoExitWin( EWX_REBOOT ); 
      }                   //点击按钮,执行关机事件
      private void button1_Click(object sender, System.EventArgs e)
      {
       DoExitWin(1);
      }
    0 0 0 
    (请您对文章做出评价)