C# 调用系统关机、重启、注销的类
2011-08-17 23:56
555 查看
我的广告单元,有空点一下哦,谢谢!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace WorkHelper { class ShutDown { [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 Reboot() { DoExitWin(EWX_FORCE | EWX_REBOOT); //重启 } public static void PowerOff() { DoExitWin(EWX_FORCE | EWX_POWEROFF); //关机 } public static void LogoOff() { DoExitWin(EWX_FORCE | EWX_LOGOFF); //注销 } } }
相关文章推荐
- C# 实现系统关机、注销、重启、休眠、挂起
- C# 实现系统关机、注销、重启、休眠、挂起
- C#实现控制Windows系统关机、重启和注销的方法
- c#调用api控制windows关机示例(可以重启/注销)
- C#实现系统关机、重启、注销等操作
- DELPHI中调用API函数ExitWindowsEX可以实现系统的关机,注销,和重启
- C#实现控制Windows系统关机、重启和注销的方法:
- C# 实现系统关机、注销、重启、休眠、挂起
- C# 实现系统关机、注销、重启、休眠、挂起
- 在c#中怎么调用ExitWindowsEx函数实现XP的关机、注销、重启操作?
- C#实现注销、重启和关机代码
- 调用API关机、重启、注销
- C++ 实现系统注销,重启,关机的方法
- C# 实现关机 重启 注销等操作
- c# 关机、注销、重启代码
- golang 调用win32 api 实现windows注销、重启、关机
- 简单实现windows系统普通或强制关机重启注销的功能
- Android调用系统关机与重启功能
- 整理出来的一个windows关机、锁定、重启、注销 API调用
- C#下计算机锁定, 注销, 重启, 关机, 休眠, 待机