


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何实现关闭远程Windows 2000系统2001-10-30 周侃yesky在Win9x中退出系统大家一定不陌生吧?好象挺神乎的,其实说穿了不过就是调用了一个底层的API函数ExitWindowsEx()罢了。但这在Win2000中行不通。不信?你随便用VB,Delphi,C+Builder试一试,没反应吧?这是因为Win2000其实就是WinNT 5.0,用的就是NT的内核。Windows NT可不象Win9x和Dos,可以随意进行底层操作,如在Win9x中可以随意关掉任何进程(如kernel32进程,这将导致死机),随意进行绝对磁盘扇区读写(如CIH病毒),Windows NT非常注重系统每个进程的权利(这一点很像Unix,但只有这样才能算得上是一个比较完整的操作系统!),一个普通的进程是不应具备有调用系统的权利(这也是为什么Win9x和Dos下病毒成灾的原因),强行调用ExitWindowsEx()只能是没有反应。所以唯一的做法是我们来赋予它足够的权限。启动C+Builder,新建一个工程,添加三个按钮,Caption依次为“注销当前用户”、“退出Windows2000”和“重新启动Windows2000”,然后双击Button1,在中间加入以下代码:HANDLE app;DWORD num;TOKEN_PRIVILEGES tok;/定义变量OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&app);tok.PrivilegeCount=1;/*OpenProcessToken()这个函数的作用是打开一个进程的访问令牌,其函数原形为BOOL OpenProcessToken(HANDLE ProcessHandle,/ handle to processDWORD DesiredAccess,/ desired access to processPHANDLE TokenHandle / pointer to handle of open access token );其中第二个参数是访问的请求方式,比较繁杂,欲了解详情请查看 Win32 Programmers ReferenceGetCurrentProcess()函数的作用是得到本进程的句柄*/LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&(tok.Privileges0.Luid);tok.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;/*LookupPrivilegeValue()的作用是修改进程的权限,在此处为修改本进程成为具有退出系统的权限,其函数原形为BOOL LookupPrivilegeValue(LPCTSTR lpSystemName,/ address of string specifying the systemLPCTSTR lpName,/ address of string specifying the privilegePLUID lpLuid/ address of locally unique identifier );*/AdjustTokenPrivileges(app,false,&tok,sizeof(tok),&tok,&num);/*AdjustTokenPrivileges()的作用是通知Windows NT修改本进程的权利,其函数原形为BOOL AdjustTokenPrivileges(HANDLE TokenHandle, / handle to token that contains privilegesBOOL DisableAllPrivileges, / flag for disabling all privilegesPTOKEN_PRIVILEGES NewState, / pointer to new privilege informationDWORD BufferLength, / size, in bytes, of the PreviousState bufferPTOKEN_PRIVILEGES PreviousState, / receives original state of changed privilegesPDWORD ReturnLength/ receives required size of the PreviousState buffer );*/ExitWindowsEx(EWX_LOGOFF,0);/注销当前用户,不用多说如法炮制,Button2的OnClick代码为:HANDLE app;DWORD num;TOKEN_PRIVILEGES tok;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&app);tok.PrivilegeCount=1;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&(tok.Privileges0.Luid);tok.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(app,false,&tok,sizeof(tok),&tok,&num);ExitWindowsEx(EWX_SHUTDOWN,0);Button3的OnClick代码为:HANDLE app;DWORD num;TOKEN_PRIVILEGES tok;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&app);tok.PrivilegeCount=1;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&(tok.Privileges0.Luid);tok.Privileges0.Attributes=SE_PRIVILEGE_ENABLED;AdjustTokenPrivileges(app,false,&tok,sizeof(tok),&tok,&num);ExitWindowsEx(EWX_REBOOT,0);一番键盘搏击之后,就可以Run了,按F9,随便点击一个按钮试试,哈哈,成功了吧?!哇呀呀,忘记存盘了,真是#*$!%?其实我们可以只把ExWindowsEx()语句加到OnClick事件中,其余代码移到FormCreate事件中即可,省不少事。但ExWindowsEx()函数只能对本地计算机进行调用,对网络上的其他计算机则无能为力。这里再请出一个API函数InitiateSystemShutdown(),这个函数可以关掉网络上和本地的任意一台指定的计算机,其函数原形为:BOOL InitiateSystemShutdown(LPTSTR lpMachineName,/ address of name of computer to shut down LPTSTR lpMessage,/ address of message to display in dialog box DWORD dwTimeout,/ time to display dialog box BOOL bForceAppsClosed,/ force applications with unsaved changes flag BOOL bRebootAfterShutdown / reboot flag );我来解释一下:第一个参数是欲关掉计算机名字的地址;第二个是欲显示对话框的地址(如果你要在关机前显示对话框的话);第三个是对话框显示的时间;第四个是是否未保存文件就强行关机的标志;最后一个是关机后是否重新启动计算机的标志。如果这样调用InitiateSystemShutdown(NULL,NULL,0,true,false),就和Button2的效果一样,美中不足的是无法注销用户(孰长孰短,就由你自己取舍了)。这个函数的用处十分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营销人员岗前培训考试题及答案解析
- 混合气潜水员成本控制考核试卷及答案
- 网络安全测试题库大全及答案解析
- 江苏b证安全员考试题库及答案解析
- 2025年查对制度考试试题库(答案+解析)
- 2025一建安全b证考试题库及答案解析
- 2025年基本公共卫生服务专项培训考试试题(附答案)
- 2025年税法考试新手必学试题及答案
- 2025年经济师考试旅游经济高级经济实务试卷与参考答案
- 2025年绵阳语文考试试题及答案
- MOOC 理性思维实训-华南师范大学 中国大学慕课答案
- 《陆上风电场工程设计概算编制规定及费用标准》(NB-T 31011-2019)
- (高清版)TDT 1001-2012 地籍调查规程
- 内部审计管理系统建设需求
- 燃气输配课程设计说明书
- 如何进行模拟堂教学
- 手术操作分类代码国家临床版3.0
- 监控扩容施工方案
- 轴的计算与校核、传动轴计算(无密码可修改)
- 职称若干问题回答
- 《复旦大学介绍》
评论
0/150
提交评论