C # makes Windows 2000XP shutdown code

xiaoxiao2021-03-06  87

using System; using System.Runtime.InteropServices;  class shoutdown { [StructLayout (LayoutKind.Sequential, Pack = 1)]  internal struct TokPriv1Luid { public int Count;  "                                                                             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 Con st 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);                                                             // can be seen in XP help information to get different parameters have  // SHUTDOWN /  DoExitWin (EWX_SHUTDOWN);? } } windows applications, above Main () the previous code Need to put the following code: [stathread]

Static void main ()

{{

.......

................}

转载请注明原文地址:https://www.9cbs.com/read-122705.html

New Post(0)