VC++ 关机代码

ExitWindowsEx(EWX_SHUTDOWN, 0);
BOOL EnableShutdownPrivilege()
{
	HANDLE hProcess = NULL;
	HANDLE hToken = NULL;
	LUID uID = {0};
	TOKEN_PRIVILEGES stToken_Privileges = {0};
	hProcess = ::GetCurrentProcess(); //获取当前应用程序进程句柄
	if(!::OpenProcessToken(hProcess,TOKEN_ADJUST_PRIVILEGES,&hToken)) //打开当前进程的访问令牌句柄(OpenProcessToken函数调用失败返回值为零)
	return FALSE;
	if(!::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&uID)) //获取权限名称为"SeShutdownPrivilege"的LUID(LookupPrivilegeValue函数调用失败返回值为零)
	return FALSE;
	stToken_Privileges.PrivilegeCount = 1; //欲调整的权限个数
	stToken_Privileges.Privileges[0].Luid = uID; //权限的LUID
	stToken_Privileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; //权限的属性,SE_PRIVILEGE_ENABLED为使能该权限
	if(!::AdjustTokenPrivileges(hToken,FALSE,&stToken_Privileges,sizeof stToken_Privileges,NULL,NULL)) //调整访问令牌里的指定权限(AdjustTokenPrivileges函数调用失败返回值为零)
	return FALSE;
	
	if(::GetLastError() != ERROR_SUCCESS) //查看权限是否调整成功
	return FALSE;
	::CloseHandle(hToken);
	return TRUE;
}

//关机函数
BOOL Shutdown(BOOL bForce)
{
	EnableShutdownPrivilege(); //使能关机特权函数
	if(bForce)
	return ::ExitWindowsEx(EWX_SHUTDOWN   EWX_FORCE,0); //强制关机
	else
	return ::ExitWindowsEx(EWX_SHUTDOWN,0);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值