在Windows/Linux下调用API函数实现重启系统
一、Linux下重启系统
linux下很简单,直接看代码:
#include <unistd.h>
#include <sys/reboot.h>bool rebootSystem()
{sync();if (reboot(RB_AUTOBOOT) < 0){return false;}return true;
}
sync函数:将缓存中的数据写入磁盘,防止数据丢失。
reboot函数:对于关机或重启,该函数若成功,则无返回值;若失败,则返回-1。
reboot(RB_AUTOBOOT) // 重启
reboot(RB_POWER_OFF) // 关机
二、Windows下重启系统
win下也不难,稍麻烦,看代码如下:
#include <Windows.h>// for OpenProcessToken()、LookupPrivilegeValueA()、AdjustTokenPrivileges()
#pragma comment (lib, "Advapi32.lib")
// for ExitWindowsEx()
#pragma comment (lib, "user32.lib")bool rebootSystem()
{HANDLE hToken;TOKEN_PRIVILEGES tkp;// 获取进程标志if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)){return false;}// 获取关机特权的LUIDLookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);tkp.PrivilegeCount = 1;tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;// 获取这个进程的关机特权AdjustTokenPrivileges(hToken, false, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);if (GetLastError() != ERROR_SUCCESS){return false;}// 强制重启计算机if ( !ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)){return false;}return true;
}
注释写的够清楚了,不多说。
另外特别注意的是,链接时需要Advapi32.lib、user32.lib,已直接通过代码指定链接这2个库了。
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0) // 重启
ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0) // 关机
若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!
同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。
在Windows/Linux下调用API函数实现重启系统相关推荐
- 安装oracle后重启电脑很卡,关于linux下安装oracle之后,重启系统后oracle不能正常启动的配置总结...
一.linux下无法启动sqlplus 问题描述: [root@localhost oracle]# su - oracle [oracle@localhost oracle]$ sqlplus &q ...
- Linux 下调用UEFI的函数
Linux 下调用UEFI的函数 摘要 Linux 调用UEFI function 时候调用约定的转换 64bits calling convention Microsoft calling conv ...
- Linux系统接口ioc,Linux下SCSI API研究及应用
Linux下SCSI API研究及应用 Linux SCSI体系结构及API数据结构的操作原理和相关的系统调用,运用SCSI API实现了有关的数据存储. 关键词: SCSI通用驱动器 SCSI接口 ...
- 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件
转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...
- linux getline参数,Linux下的getline函数
最近在做国嵌的mp3项目,在mp3主控程序中用到了这个函数,挺好使的,在这里记录一下.注意是linux下的,不是C++中的. 函数原型 ssize_t getline(char **lineptr, ...
- sleep头文件linux,Linux下的sleep函数 要用的话得包涵什么头文件啊?
Linux下的sleep函数 要用的话得需要#include sleep把进程的运行状态改为睡眠,将其从系统可执行队列去掉,这样系统就不会调度到该进程,不会分配CPU时间片,同时根据该进程的睡眠时间, ...
- [转帖]关于Linux下的icotl函数
关于Linux下的icotl函数 最近接触android开发,因为有时间所以就关注了下android的源码,在跟踪源码过程中到最后都会遇到icotl函数,虽然在Symbian中曾经遇到过RSocket ...
- C#调用API函数EnumWindows枚举窗口的方法
C#调用API函数EnumWindows枚举窗口的方法 原文 http://blog.csdn.net/dengta_snowwhite/article/details/6067928 与C++不同, ...
- c调用python函数_python - Linux C调用Python 函数
1.Python脚本,名称为py_add.py def add(a=,b=): print('Function of python called!') print('a = ',a) print('b ...
最新文章
- 职场新人:工作七大忌
- h5执行php函数,值得一个的5个强大的HTML5API 函数
- 我很明确自己未来的方向,计算机和经济外加管理
- 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
- Python __name__ == ‘__main__’详细解释-Python零基础入门教程
- 在Ubuntu8.04上简单定制个性化的Terminal操作界面
- java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
- python 文字转语音wav_使用Python实现文字转语音并生成wav文件的例子
- 计算机组装与维护精品,国家精品课程——《计算机组装与维护》.pdf
- 国产操作系统(Linux)技术流派
- dsp28335时钟 总结
- 戴尔显示rpc服务器,swmm(暴雨管理模型)安装完成后运行显示 RPC服务器不可用
- 拉普拉斯方程的解matlab,急求用matlab编写解拉普拉斯方程的程序
- openbci脑电帽3d打印文件下载
- 说明书中电磁兼容部分指南和制造商的声明怎么写?
- 计算机顶级会议排名以及英文投稿的一点经验
- 三星s8怎么分屏操作_一心三用 三星Galaxy Z Fold2 5G成多任务处理大师
- Nginx源码阅读:ngx_palloc 内存池
- 2021年安全员-C证(陕西省)考试资料及安全员-C证(陕西省)新版试题
- 如何使用Android模拟器创建Android虚拟设备
热门文章
- 开心截图,拖拽大作战
- CCNA路由器及通信
- 手淘 flexible
- 显示器点距 测试软件,在小屏幕上使用高分的点距问题_液晶显示器_液晶显示器新闻-中关村在线...
- 啊哦,软著申请,收到了补正通知
- Kali-密码生成工具-crunch
- Unity免费的优质场景资源
- Activiti流程执行历史数据查询
- uboot启动 -- uboot基本启动流程
- 使用swagger报错:Exception encountered during context initialization - cancelling refresh attempt解决方法