XP系统中关机、注销、重启功能
2007-04-02 23:27
639 查看
void CRestartAndShutdown::OnRestartcom()
{
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
}
void CRestartAndShutdown::OnShutdowncom()
{
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0);
}
}
void CRestartAndShutdown::OnLogoffCom()
{
// SendMessage(WM_CLOSE,0,0); //关闭登录窗口
/* CSystemCom systemcom;
if(systemcom.DoModal() == IDOK+1){
CDialog::OnOK();
AfxGetMainWnd()->PostMessage(WM_CLOSE,0,0); //关闭主界面
CLoginSystem login;
login.DoModal();
}*/
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);
}
}
{
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_REBOOT|EWX_FORCE,0);
}
}
void CRestartAndShutdown::OnShutdowncom()
{
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_SHUTDOWN|EWX_FORCE,0);
}
}
void CRestartAndShutdown::OnLogoffCom()
{
// SendMessage(WM_CLOSE,0,0); //关闭登录窗口
/* CSystemCom systemcom;
if(systemcom.DoModal() == IDOK+1){
CDialog::OnOK();
AfxGetMainWnd()->PostMessage(WM_CLOSE,0,0); //关闭主界面
CLoginSystem login;
login.DoModal();
}*/
CSystemCom systemcom;
if(systemcom.DoModal() == IDOK){
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
DWORD dwVersion;
dwVersion=GetVersion(); //取得当前操作系统的版本信息
if(dwVersion<0x80000000){ //当系统版本高于98时执行以下代码
OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);
LookupPrivilegeValue(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);
ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);
}
else
ExitWindowsEx(EWX_LOGOFF|EWX_FORCE,0);
}
}
相关文章推荐
- 简单实现windows系统普通或强制关机重启注销的功能
- 让Android程序获得系统权限,实现关机重启,静默安装等功能
- C# 实现系统关机、注销、重启、休眠、挂起
- c语言实现系统关机注销等功能
- 使用API调用Windows“注销/重启/关机”功能
- C# 实现系统关机、注销、重启、休眠、挂起
- 让Android程序获得系统的权限,实现关机重启,静默安装等功能
- C#实现关机、重启、注销功能 2009-2-20
- C#实现控制Windows系统关机、重启和注销的方法:
- 如何用VC实现系统关机、重启、注销
- Linux系统裁减之,制作一个极度精简的Linux-3-为精简的系统增加网络功能和关机重启功能
- C#实现系统关机、重启、注销等操作
- Delphi 消息拦截篇 -- 之拦截系统关机、重启、注销
- Android调用系统关机与重启功能
- 手把手带你自制Linux系统之三 添加关机重启及用户登录功能
- Android调用系统关机与重启功能
- 在c#中怎么调用ExitWindowsEx函数实现XP的关机、注销、重启操作?
- 电脑重装xp系统不能关机启动高级电源管理功能可解决
- C# 实现注销、关机、重启电脑功能
- linux 系统关机 重启与注销命令