Window关机函数ExitWindowsEx详解 - dwdm - 博客园

本文介绍了Windows系统关闭、注销和锁定工作站的相关函数,包括ExitWindowsEx和InitiateSystemShutdown的使用方法。通过示例代码展示了如何安全地关闭或注销系统,以及强制关闭进程的实现。同时提到了LockWorkStation函数用于锁定工作站以保护用户隐私。
摘要由CSDN通过智能技术生成
导读:

“系统ShutDown”属于Windows系统的一种基本服务。功能上有“关闭系统”,“注销用户”,“锁定工作站”3中操作。SDK中提供了几个函数,来对此服务进行调用。


“关闭系统”功能使计算机可以被安全的关闭。所有在文件系统里缓冲的内容都被强制写入磁盘。然后,显示相应的对话框,提示用户计算机将被关闭或者已经准备好被关闭。可选的情况一般是计算机在关闭后重起,而不是直接切断电源。


如果一个进程调用“注销”功能函数,则该进程所在的安全环境范围内的所有进程都被终止,使当前的用户退出系统。一个登陆对话框被显示,期待新用户的登陆。


“锁定工作站”功能使你可以在离开计算机的时候,保护计算机屏幕不被未授权的用户看到。要解除锁定,必须用管理员或着授权用户的帐号和密码重新登陆。


如何关闭系统:


程序可以用两种方式关闭本地或远程计算机
直接关闭系统
关闭系统并重启
Windows NT/2000 及后续版本: 程序必须拥有SE_SHUTDOWN_NAME权限才能成功调用关闭函数。



ExitWindowsEx函数可以用来关闭系统。如函数成功调用,系统对每个窗口发送WM_QUERYENDSESSION 消息,询问窗口所属的程序是否可以被终止。收到此消息的程序应该进行响应,清除环境释放资源,然后返回TRUE表示自己可以被终止。然而调用ExitWindowEx的时候如果指定了EXW_FORCE,则系统强行终止相关的进程并关闭,这样可能导致数据的丢失。


这是一段在NT/2000中调用ExitWindowEx关闭系统的程序(强制关闭所有程序)。


在windows95/98/me中直接调用ExitWindowEx即可。
-----------------------------------------------------------------------------------------------------------



HANDLE hToken;
TOKEN_PRIVILEGES tkp;


// Get a token for this process.


if (!OpenProcessToken(GetCurrentProcess(),


TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))



Error("OpenProcessToken");


// 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)


error("AdjustTokenPrivileges");


// Shut down the system and force all applicatio

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值