如何实现关闭远程Windows2000系统

如何实现关闭远程Windows2000系统

ID:38081154

大小:27.50 KB

页数:3页

时间:2019-05-24

如何实现关闭远程Windows2000系统_第1页
如何实现关闭远程Windows2000系统_第2页
如何实现关闭远程Windows2000系统_第3页
资源描述:

《如何实现关闭远程Windows2000系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何实现关闭远程Windows2000系统2001-10-30··周侃··yesky  在Win9x中退出系统大家一定不陌生吧?好象挺神乎的,其实说穿了不过就是调用了一个底层的API函数ExitWindowsEx()罢了。但这在Win2000中行不通。不信?你随便用VB,Delphi,C++Builder试一试,没反应吧?  这是因为Win2000其实就是WinNT5.0,用的就是NT的内核。WindowsNT可不象Win9x和Dos,可以随意进行底层操作,如在Win9x中可以随意关掉任何进程(如kerne

2、l32进程,这将导致死机),随意进行绝对磁盘扇区读写(如CIH病毒),WindowsNT非常注重系统每个进程的权利(这一点很像Unix,但只有这样才能算得上是一个比较完整的操作系统!),一个普通的进程是不应具备有调用系统的权利(这也是为什么Win9x和Dos下病毒成灾的原因),强行调用ExitWindowsEx()只能是没有反应。所以唯一的做法是我们来赋予它足够的权限。  启动C++Builder,新建一个工程,添加三个按钮,Caption依次为“注销当前用户”、“退出Windows2000”和“重新启动W

3、indows2000”,然后双击Button1,在中间加入以下代码:{HANDLEapp;DWORDnum;TOKEN_PRIVILEGEStok;//定义变量OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES

4、TOKEN_QUERY,&app);tok.PrivilegeCount=1;/*  OpenProcessToken()这个函数的作用是打开一个进程的访问令牌,其函数原形为BOOLOpenProcessToken( HANDLE

5、ProcessHandle, //handletoprocessDWORDDesiredAccess, //desiredaccesstoprocessPHANDLETokenHandle //pointertohandleofopenaccesstoken  );  其中第二个参数是访问的请求方式,比较繁杂,欲了解详情请查看Win32Programmer'sReference  GetCurrentProcess()函数的作用是得到本进程的句柄*/LookupPrivilegeValue(NULL,SE_

6、SHUTDOWN_NAME,&(tok.Privileges[0].Luid));tok.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;/*  LookupPrivilegeValue()的作用是修改进程的权限,在此处为修改本进程成为具有退出系统的权限,其函数原形为BOOLLookupPrivilegeValue(LPCTSTRlpSystemName, //addressofstringspecifyingthesystemLPCTSTRlpName, //a

7、ddressofstringspecifyingtheprivilegePLUIDlpLuid //addressoflocallyuniqueidentifier  );*/AdjustTokenPrivileges(app,false,&tok,sizeof(tok),&tok,&num);/*AdjustTokenPrivileges()的作用是通知WindowsNT修改本进程的权利,其函数原形为BOOLAdjustTokenPrivileges(HANDLETokenHandle, //handle

8、totokenthatcontainsprivilegesBOOLDisableAllPrivileges, //flagfordisablingallprivilegesPTOKEN_PRIVILEGESNewState, //pointertonewprivilegeinformationDWORDBufferLength, //size,inbytes,ofthePreviousStatebufferPTOKEN_PRIVILEGESPreviousState,//receivesoriginalst

9、ateofchangedprivilegesPDWORDReturnLength //receivesrequiredsizeofthePreviousStatebuffer  );*/ExitWindowsEx(EWX_LOGOFF,0);//注销当前用户,不用多说}  如法炮制,Button2的OnClick代码为:{HANDLEapp;DWORDnum;TOKEN_PRIVILEGEStok;OpenPro

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。