电脑关机注销什么意思

发布时间: 2023-04-10 13:13 阅读: 文章来源:转载

以下类能够让计算机定时关机,重启和注销,我是用在用教师机控制学生机这个地方

/// /// 操作系统开关机/// public class ControlPC{#region 调用函数[StructLayout(LayoutKind.Sequential, Pack = 1)]struct TokPriv1Luid{public int Count;public long Luid;public int Attr;}[DllImport("kernel32.dll", ExactSpelling = true)]static extern IntPtr GetCurrentProcess();[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]static extern bool OpenProcessToken(IntPtr h, int acc, ref IntPtr phtok);[DllImport("advapi32.dll", SetLastError = true)]static extern bool LookupPrivilegeValue(string host, string name, ref long pluid);[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]static extern bool AdjustTokenPrivileges(IntPtr htok, bool disall,ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen);[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]static extern bool ExitWindowsEx(int DoFlag, int rea);const int SE_PRIVILEGE_ENABLED = 0x00000002;const int TOKEN_QUERY = 0x00000008;const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";const int EWX_LOGOFF = 0x00000000;const int EWX_SHUTDOWN = 0x00000001;const int EWX_REBOOT = 0x00000002;const int EWX_FORCE = 0x00000004;const int EWX_POWEROFF = 0x00000008;const int EWX_FORCEIFHUNG = 0x00000010;private static void DoExitWin(int DoFlag){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(DoFlag, 0);}static void Reboot(){DoExitWin(EWX_FORCE | EWX_REBOOT);}static void PowerOff(){DoExitWin(EWX_FORCE | EWX_POWEROFF);}static void LogOff(){DoExitWin(EWX_FORCE | EWX_LOGOFF);}#endregion/// /// 在 seconds 秒内关机/// /// public void PowerOff(int Seconds)//关机{if (Seconds != 0)Thread.Sleep(Seconds * 1000);PowerOff();}/// /// 在 seconds 秒内重启/// /// public void Reboot(int Seconds)//重启{if (Seconds != 0)Thread.Sleep(Seconds * 1000);Reboot();}/// /// 在 seconds 秒内注销/// /// public void LogOff(int Seconds)//注销{if (Seconds != 0)Thread.Sleep(Seconds * 1000);LogOff();}}用法就是调用后面的几个函数了
•••展开全文
相关文章