using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;namespace CommonDLL
{public class ShutDownSys{//C#关机代码// 这个结构体将会传递给API。使用StructLayout//(...特性,确保其中的成员是按顺序排列的,C#编译器不会对其进行调整。[StructLayout(LayoutKind.Sequential, Pack = 1)]internal struct TokPriv1Luid{public int Count; public long Luid; public int Attr;}// 以下使用DllImport特性导入了所需的Windows API。// 导入的方法必须是static extern的,并且没有方法体。//调用这些方法就相当于调用Windows API。[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 LookupPrivilegeValueA(string host, string name, ref long pluid);[DllImport("advapi32.dll", ExactSpelling = true, SetLastError = true)]internal static extern boolAdjustTokenPrivileges(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);//C#关机代码// 以下定义了在调用WinAPI时需要的常数。//这些常数通常可以从Platform SDK的包含文件(头文件)中找到public const int SE_PRIVILEGE_ENABLED = 0x00000002;public const int TOKEN_QUERY = 0x00000008;public const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;public const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";public const int EWX_LOGOFF = 0x00000000;public const int EWX_SHUTDOWN = 0x00000001;public const int EWX_REBOOT = 0x00000002;public const int EWX_FORCE = 0x00000004;public const int EWX_POWEROFF = 0x00000008;public const int EWX_FORCEIFHUNG = 0x00000010;// 通过调用WinAPI实现关机,主要代码再最后一行ExitWindowsEx  //这调用了同名的WinAPI,正好是关机用的。//C#关机代码public 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 = LookupPrivilegeValueA(null, SE_SHUTDOWN_NAME, ref tp.Luid);ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);ok = ExitWindowsEx(flg, 0);}
<pre name="code" class="csharp"><span style="font-family: Arial, Helvetica, sans-serif;">    }</span>

}



调用:
<pre name="code" class="csharp">public void Reboot()
{ShutDownSys.DoExitWin(ShutDownSys.EWX_FORCE | ShutDownSys.EWX_REBOOT);
}public void ShutDown()
{ShutDownSys.DoExitWin(ShutDownSys.EWX_FORCE | ShutDownSys.EWX_POWEROFF);
}public void LogOff()
{ShutDownSys.DoExitWin(ShutDownSys.EWX_FORCE | ShutDownSys.EWX_LogOFF);
}

C#强制关机、重启以及注销计算机相关推荐

  1. C# API强制关机、重启以及注销计算机

    在Windows系统中有2种方式进行关机.重启以及注销计算机操作: 1.使用shutdown()命令:2.使用系统API: 以下是使用系统API进行操作的实例. 程序实例界面: 程序实例代码: 1 u ...

  2. 计算机锁定不能强制选项无法关机,win7系统1909无法关机只能强制关机重启的解决办法...

    win7系统1909无法关机只能强制关机重启的解决办法? 我们在安装更新了win71909版本系统之后,在关电脑的过程中发现电脑一直停留在显示关机的界面,但是并没有直接关掉只能重启.对于这种问题,小编 ...

  3. HTML强制关机,电脑死机如何强制关机重启

    电脑卡住了死机如何强制关机重启?我们在使用电脑的时候经常会出现电脑卡住死机无法操作的问题,如果持续等待也不会有结果,也会浪费时间,拔电源是不建议大家去做的,下面就教大家如何去操作! 方法一: 1.我们 ...

  4. 黑屏?白屏?蓝屏?整理戴尔G3在使用过程中遇到的,一些强制关机重启就能解决的问题

    强制关机可谓是笔记本使用者经常用的一种手段了,以至于坊间流传一句话: "遇事不决,10秒强制关机" 博主使用G3 3590近3年了,做个笔记来记录遇到的一些,使用强制关机,再开机就 ...

  5. Linux学习 | vim编辑器关机重启登录注销

    文章目录 一.vim编辑器 1.1 基本介绍 1.2 vim编辑器的三种模式 1.2.1 一般模式 1.2.2 编辑模式 1.2.3 命令行模式 1.3 vim快捷键 二.关机重启&登录注销 ...

  6. 强制关机/重启/注销

    Windows关机函数 最常用:        ExitWindowsEx(EWX_SHUTDOWN, 0);       ExitWindowsEx(EWX_REBOOT, 0); ExitWind ...

  7. Ubuntu 的关机重启与注销

    1.关机命令 shutdown shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以 ...

  8. Shell命令-关机重启及注销之logout、exit

    内容更新中 转载于:https://www.cnblogs.com/wjcLinux/p/11125863.html

  9. iphone11如何强制关机 苹果11手机一键强制重启方法教程

    iphone11如何强制关机?iphone11如何强制重启?对于iphone11可是很多网友们的最爱,但是长时间使用之后,难免都会出现一些问题,比如手机无法关机?无法重启?那么想要让苹果手机强制关机重 ...

最新文章

  1. AWS攻略——使用S3托管静态网页
  2. 为啥同一个程序,单步执行和debug执行出现的结果不一样呢?
  3. Linux的账号口令机制及其爆破
  4. Mysql之count(*),count(1),count(field)区别、性能差异
  5. USACO 1.3... 虫洞 解题报告(搜索+强大剪枝+模拟)
  6. Ruby on rails环境和开发工具准备...
  7. Dubbo的使用及原理浅析
  8. 项目中用到的BAPI合集
  9. exchange 2010 日志规则应用之审计邮箱
  10. 11gR2 grid安装最后报错[INS-20802] Oracle Cluster Verification Utility failed
  11. 几种流行Webservice框架性能对照
  12. SAP云平台上的Fiori administation工具
  13. 为 Nginx 添加模块
  14. STM32(三)-------流水灯(标准库函数)
  15. 有限元工程应用方法-ANSYS单元刚度矩阵计算理论详解
  16. 2022年危险化学品生产单位安全生产管理人员试题模拟考试平台操作
  17. 电子信息技术专业名词中英文对照(三)
  18. matlab 图像范围,Matlab对数范围colorbar图像c
  19. DropBox系列-安卓DropBox介绍
  20. 爬虫练习-爬取拉勾网招聘信息(2020.2.2)

热门文章

  1. 细胞工程-3-植物组织与细胞培养的基本原理
  2. 《Access 2007开发指南(修订版)》一一1.9 Access 2007的新功能
  3. 二进制和十进制相互转换的简便方法
  4. python3 GUI用户界面总结(以串口调试为例,持续改进)
  5. 乔春洋:品牌定位剖析
  6. 企业微信会话存档解密
  7. WASM(WebAssembly)简介
  8. Here Document免交互
  9. 理财U20 长期筹资 教材习题解读
  10. iMacros 自动发文章和外链的做法