当前位置: 首页 > news >正文

C实现关机

说明:下面文章都是居于杨中科的C语言可以干大事系列视频的。用C写一些小的桌面应用程序。主要是锻炼编程的思维。

.在Windows2000一下的操作系统版本,直接就可以调用Windows自带的API,即系统关机函数。BOOL ExitWindowsEx(UINT uFlags,DWORD dwReason);uFlags的值:
EWX_LOGOFF,0,注销
EWX_SHUTDOWN,1,关机
EWX_REBOOT,2,重启
EWX_POWEROFF,8,断开电源
EWX_FORCE,4,强制终止所有程序
EWX_FORCEIFHUNG,16,强制终止位响应的程序

后面的dwReason一般不指定,可能是历史遗留的问题吧。我们在使用的时候直接将其置为 0就ok了。

2.但是在Windows2000以上包括Windows2000的系统,如果只是点用此函数,只能实现注销的功能,其余的功能还需要在程序中写代码来获取相应的权限:在Main_OnInitDialog函数中,即窗口初始化的时候取得相应的关机权限,代码如下:

我将其抽象为一个函数吧GetPrivilege()

{

      if (!OpenProcessToken(GetCurrentProcess(), 
        TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) 
      return( FALSE ); 

   // Get the LUID for the shutdown privilege. 

   LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, 
        &tkp.Privileges[0].Luid); 

   tkp.PrivilegeCount = 1; // one privilege to set    
   tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 

   // Get the shutdown privilege for this process. 

   AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, 
        (PTOKEN_PRIVILEGES)NULL, 0); 
    if (GetLastError() != ERROR_SUCCESS) 
      return FALSE; 

// Shut down the system and force all applications to close.

//
    // Add initializing code here
    //

}

由于本人水平有限,错误很多,请各位大侠热心赐教,谢谢!可以给我留言。


转载于:https://www.cnblogs.com/YangFengHui/archive/2011/04/16/CLanguage.html

相关文章:

  • 项目管理实践教程
  • Spring Security学习二
  • 动态创建数据库实例
  • OpenGL FAQ
  • 在.NET环境中实现每日构建--NAnt篇
  • 刚刚达内的宣讲会(碰到微软经典笔试题)
  • 中国软件创新产业弯道超车
  • AjaxControlToolkit学习笔记
  • 老老实实做好备份才是硬道理
  • poj2262筛子法素数打表
  • 离职,我们应该做什么?——Leo网上答疑40
  • SQL Server字符串处理函数大全
  • 不用写成 if @i=1 OR @i=2 OR ... 这么蠢
  • Linux服务器中对于Memcache的安装配置
  • 硬盘文件丢失,启动报错ORA-01157
  • 【node学习】协程
  • 【前端学习】-粗谈选择器
  • 0x05 Python数据分析,Anaconda八斩刀
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • eclipse(luna)创建web工程
  • IDEA常用插件整理
  • JavaScript创建对象的四种方式
  • mockjs让前端开发独立于后端
  • NSTimer学习笔记
  • opencv python Meanshift 和 Camshift
  • 基于HAProxy的高性能缓存服务器nuster
  • 收藏好这篇,别再只说“数据劫持”了
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 一、python与pycharm的安装
  • 06-01 点餐小程序前台界面搭建
  • ​VRRP 虚拟路由冗余协议(华为)
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (1)虚拟机的安装与使用,linux系统安装
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (4) PIVOT 和 UPIVOT 的使用
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (一) storm的集群安装与配置
  • (一)appium-desktop定位元素原理
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)用.Net的File控件上传文件的解决方案
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 生成二级域名
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET是什么
  • .Net小白的大学四年,内含面经
  • @Bean注解详解
  • @RequestParam详解
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题