C#代码关闭WindowsXP

C#代码关闭WindowsXP


    c#代码关闭windows XP 作者:孟宪会 出自:【孟宪会之精彩世界】  -------------------------------------------------------------------------------- using System;using System.Runtime.InteropServices;  class shoutdown{  [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 );  }        public static void Main()      {        Console.WriteLine("正在关闭计算机……");        // 修改 EWX_SHUTDOWN 或者 EWX_LOGOFF, EWX_REBOOT等实现不同得功能。        // 在XP下可以看到帮助信息,以得到不同得参数        // SHUTDOWN /?        DoExitWin(EWX_SHUTDOWN);      }}        (2005-9-23:11:46)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [C#] 的这些文章也感兴趣:

实现带有用户身份验证的文件传输WebService(2)
C#网络编程初探(2)
C#3.0 新特性速览
[C#学习]在多线程中如何调用Winform
用C#编程实现检查Scroll Lock键的状态
简易C#的IDE
c#重点知识详解(三)
C#异步编程
VisualC#编写实现POP3的程序
用C#实现生成PDF文档(附源码)