如何能在2000或nt4.0(不是98)下实现自动关机?有源代码的加分

andy_lau 2002-05-12 08:20:45
有源代码的加分
...全文
31 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy_lau 2002-05-12
  • 打赏
  • 举报
回复
具体点!!谢谢
chinatorpedo 2002-05-12
  • 打赏
  • 举报
回复
先要解决权限问题!关掉所有进程后再关机。
visualtree 2002-05-12
  • 打赏
  • 举报
回复
在关机以前需要取得关机的权限
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
MessageBox (NULL, TEXT("OpenProcessToken") , TEXT ("Error"),MB_ICONERROR);
// 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);
// Cannot test the return value of AdjustTokenPrivileges.
if (GetLastError() != ERROR_SUCCESS)
MessageBox (NULL, TEXT("AdjustTokenPrivileges") ,
TEXT("Error"),MB_ICONERROR);
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_POWEROFF, 0))
MessageBox (NULL, TEXT("ExitWindowsEx") ,
TEXT("Error"),MB_ICONERROR);
webber84 2002-05-12
  • 打赏
  • 举报
回复
这是关机的代码:
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
BOOL fResult;

//打开与当前进程相关联的存取标识
if (!::OpenProcessToken(GetCurrentProce(),TOKEN_ADJUST_PRIVILEGES
|TOKEN_QUERY,&hToken))
AfxMessageBox("OpenProcessToken failed");
//查出本机系统的当前特权的Luid
::LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privilege[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)
AfxMessageBox("AdjustTokenPrivileges enable failed");
fResult = ::InitiateSystemShutdown(NULL,"即将关机",20,FALSE,
TRUE);
if (!fResult)
AfxMessageBox("InitiateSystemShutDown failed");
tkp.Privileges[0].Attributes = 0;
::AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES) NULL,0);
if (::GetLastError()!=ERROR_SUCCESS)
AfxMessageBox("AdjustTokenPrivileges disable failed");

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧