注销、关机、重启计算机源码
来源:互联网 发布:如何看懂软件 编辑:程序博客网 时间:2024/05/24 06:48
一段注销、关机、重启计算机的源码,编译环境 WIN7 VS2010
// ExitWindows.h
#define _AFXDLL#pragma once
#include <afxwin.h>
#define B_LOGOFF 0
#define B_SHUTDOWN 0x00000001
#define B_REBOOT 0x00000002
int BExitWindows(UINT nFlag)
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion = GetVersion(); //获得Windows NT或Win32的版本号
switch(nFlag)
{
case B_LOGOFF://注销
ExitWindowsEx(EWX_LOGOFF,0);
break;
case B_REBOOT://重新启动
if (dwVersion < 0x80000000)
{// Windows NT系列
if(!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return -1;
if(!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid))
return -1;
tkp.PrivilegeCount = 1; // 设置一个权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
}
else
{//Windows 95系列
ExitWindowsEx(EWX_FORCE | EWX_REBOOT,0);
}
break;
case B_SHUTDOWN://关闭计算机
if (dwVersion < 0x80000000)
{// Windows NT
if(!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return -1;
if(!LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid))
return -1;
tkp.PrivilegeCount = 1; // 设置一个权限
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,(PTOKEN_PRIVILEGES)NULL, 0);
ExitWindowsEx(EWX_SHUTDOWN |EWX_FORCE, 0);
}
else
{
ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN,0);
}
break;
}
return 0;
}
0 0
- 注销、关机、重启计算机源码
- C# 计算机重启、关机、注销
- C#注销关机重启计算机
- 关机 重启 注销
- 注销 关机 重启
- VB.NET实现计算机关机/重启/休眠/注销
- 用C#控制计算机重启、关机及注销
- 用C#控制计算机重启、关机及注销
- VB.NET实现计算机关机/重启/休眠/注销
- C# 控制本地计算机注销,重启,关机命令
- C#下计算机锁定, 注销, 重启, 关机, 休眠, 待机
- C#强制关机、重启以及注销计算机
- C#下计算机锁定, 注销, 重启, 关机, 休眠, 待机
- MFC通过windowsAPI控制计算机关机,注销,重启
- 控制系统关机,重启,注销
- linux注销、关机、重启
- 强制关机/重启/注销
- MFC-关机注销重启
- CentOS 中 make: g++ command not found
- 递归
- 新入门之Mybatis
- Algorithms—110.Balanced Binary Tree
- Spring MVC事务配置
- 注销、关机、重启计算机源码
- java程序员必须学会的各种命令
- 深入浅出 消息队列 ActiveMQ
- 使用极光推送做iOS客户端的推送
- 去掉storyboard中多余的navigationcontroller
- jquery ajax异步上传
- android获取屏幕分辨率的两种方法
- Activity之间传递对象之问题一
- java代码直接调用WebService的方法