自动关机

来源:互联网 发布:mac下的office 编辑:程序博客网 时间:2024/06/02 12:52

Process[] allproc = Process.GetProcesses();
foreach (Process proc in allproc)
{
if ((!proc.MainWindowHandle.Equals(IntPtr.Zero)) && proc.Id != Process.GetCurrentProcess().Id)
{
proc.Kill();
}
}
Process.GetCurrentProcess().Kill(); //不需要

/////////////////////////////////////////////////////////////////////////////////

 Type   LUID  
          LowPart   As   Long  
          HighPart   As   Long  
  End   Type  
  Type   LUID_AND_ATTRIBUTES  
          pLuid   As   LUID  
          Attributes   As   Long  
  End   Type  
  Type   TOKEN_PRIVILEGES  
          PrivilegeCount   As   Long  
          Privileges(ANYSIZE_ARRAY)   As   LUID_AND_ATTRIBUTES  
  End   Type  
  Private   Declare   Function   GetCurrentProcess   Lib   "kernel32"   ()   As   Long  
  Private   Declare   Function   OpenProcessToken   Lib   "advapi32"   (ByVal   ProcessHandle   As   Long,   ByVal   DesiredAccess   As   Long,   TokenHandle   As   Long)   As   Long  
  Private   Declare   Function   LookupPrivilegeValue   Lib   "advapi32"   Alias   "LookupPrivilegeValueA"   (ByVal   lpSystemName   As   String,   ByVal   lpName   As   String,   lpLuid   As   LUID)   As   Long  
  Private   Declare   Function   AdjustTokenPrivileges   Lib   "advapi32"   (ByVal   TokenHandle   As   Long,   ByVal   DisableAllPrivileges   As   Long,   NewState   As   TOKEN_PRIVILEGES,   ByVal   BufferLength   As   Long,   PreviousState   As   TOKEN_PRIVILEGES,   ReturnLength   As   Long)   As   Long  
  Private   Declare   Function   ExitWindowsEx   Lib   "user32"   (ByVal   uFlags   As   Long,   ByVal   dwReserved   As   Long)   As   Long  
  Private   Declare   Function   GetVersionEx   Lib   "kernel32"   Alias   "GetVersionExA"   (ByRef   lpVersionInformation   As   OSVERSIONINFO)   As   Long  
  'Detect   if   the   program   is   running   under   Windows   NT  
  Public   Function   IsWinNT()   As   Boolean  
          Dim   myOS   As   OSVERSIONINFO  
          myOS.dwOSVersionInfoSize   =   Len(myOS)  
          GetVersionEx   myOS  
          IsWinNT   =   (myOS.dwPlatformId   =   VER_PLATFORM_WIN32_NT)  
  End   Function  
  'set   the   shut   down   privilege   for   the   current   application  
  Private   Sub   EnableShutDown()  
          Dim   hProc   As   Long  
          Dim   hToken   As   Long  
          Dim   mLUID   As   LUID  
          Dim   mPriv   As   TOKEN_PRIVILEGES  
          Dim   mNewPriv   As   TOKEN_PRIVILEGES  
          hProc   =   GetCurrentProcess()  
          OpenProcessToken   hProc,   TOKEN_ADJUST_PRIVILEGES   +   TOKEN_QUERY,   hToken  
          LookupPrivilegeValue   "",   "SeShutdownPrivilege",   mLUID  
          mPriv.PrivilegeCount   =   1  
          mPriv.Privileges(0).Attributes   =   SE_PRIVILEGE_ENABLED  
          mPriv.Privileges(0).pLuid   =   mLUID  
          '   enable   shutdown   privilege   for   the   current   application  
          AdjustTokenPrivileges   hToken,   False,   mPriv,   4   +   (12   *   mPriv.PrivilegeCount),   mNewPriv,   4   +   (12   *   mNewPriv.PrivilegeCount)  
  End   Sub  
  '   Shut   Down   NT  
  Public   Sub   ShutDownNT(Force   As   Boolean)  
          Dim   ret   As   Long  
          Dim   Flags   As   Long  
          Flags   =   EWX_SHUTDOWN  
          If   Force   Then   Flags   =   Flags   +   EWX_FORCE  
          If   IsWinNT   Then   EnableShutDown  
          ExitWindowsEx   Flags,   0  
  End   Sub  
  'Restart   NT  
  Public   Sub   RebootNT(Force   As   Boolean)  
          Dim   ret   As   Long  
          Dim   Flags   As   Long  
          Flags   =   EWX_REBOOT  
          If   Force   Then   Flags   =   Flags   +   EWX_FORCE  
          If   IsWinNT   Then   EnableShutDown  
          ExitWindowsEx   Flags,   0  
  End   Sub  
  'Log   off   the   current   user  
  Public   Sub   LogOffNT(Force   As   Boolean)  
          Dim   ret   As   Long  
          Dim   Flags   As   Long  
          Flags   =   EWX_LOGOFF  
          If   Force   Then   Flags   =   Flags   +   EWX_FORCE  
          ExitWindowsEx   Flags,   0  
  End   Sub  
   
  'In   a   form  
  'This   project   needs   a   form   with   three   command   buttons  
  Private   Sub   Command1_Click()  
          LogOffNT   True  
  End   Sub  
  Private   Sub   Command2_Click()  
          RebootNT   True  
  End   Sub  
  Private   Sub   Command3_Click()  
          ShutDownNT   True  
  End   Sub  
  Private   Sub   Form_Load()  
          'KPD-Team   2000  
          'URL:   http://www.allapi.net/  
          'E-Mail:   KPDTeam@Allapi.net  
          Command1.Caption   =   "Log   Off   NT"  
          Command2.Caption   =   "Reboot   NT"  
          Command3.Caption   =   "Shutdown   NT"  
  End   Sub