文档详情

远程关机与开机.ppt

发布:2018-06-12约4千字共19页下载文档
文本预览下载声明
网络编程技术 远程关机和开机 授课教师: 网络编程—— 导入 在局域网管理软件中,一个最常用的功能就是远程关机和开机功能。一个管理员通常管理几十台电脑,当需要开机或关机时,如果一台一台的操作就太麻烦了,因此通常机房管理软件中都配备了远程开机或关机的功能,管理员只需在一台计算机上操作,就可以控制所有计算机开机、关机或者重启。本章,我们就来介绍一下怎样用C++编程实现远程关机和远程唤醒计算机的功能。 / / / / / / / / / / / 本章要点 远程关机shutdown 用木马程序实现远程关机 远程唤醒计算机 / / / / / / / / / / / 远程关机——shutdown shutdown命令 在Windows XP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可以关闭或重新启动计算机,还可以实现定时关机、远程关机。 例如,在30秒内关闭计算机名为RANRAN的机器命令是: shutdown –s –m \\RANRAN -t 30 / / / / / / / / / / / 为什么出现“拒绝访问”的情况? 要在客户计算机(被远程关闭的计算机)中赋予guest用户远程关机的权限。可利用Windows “组策略”或“管理工具”中的“本地安全策略”来实现。 代码详解——InitiateSystemShutdown() 实现关闭或重启计算机的功能。如果函数调用成功,则返回值为TRUE;否则,返回值为FALSE。 BOOL InitiateSystemShutdown( LPTSTR lpMachineName, LPTSTR lpMessage, DWORD dwTimeout, BOOL bForceAppsClosed, BOOL bRebootAfterShutdown ); 参数lpMachineName:指定以MULL终止的用来指定要关机的网络名称的字符串。如果为NULL,则该函数关掉本地计算机。 参数lpMessage:指向一个要显示在关机对话框中的消息的字符串。 参数 dwTimeout:指定对话框应该显示的延迟时间(按秒计)。 参数bForceAppsClosed:指定对变化未做保存的应用程序是否被强制关闭。如果这个参数为TRUE,则应用程序被关闭。如果参数为FALSE,则显示一个对话框以提示用户关闭这些应用程序。 参数bRebootAfterShutdown:指定计算机关机之后是否立即重启。如果参数为TRUE,则计算机重启。如果参数为FALSE,则系统将所有高速缓存刷新到磁盘上,清除屏幕,并且显示一条消息,指示关掉电源是安全的。 / / / / / / / / / / / 设置进程访问权限 调用InitiateSystemShutdown()函数关闭远程计算机需要先获得SE_SHUTDOWN_ NAME权限。 涉及到的函数: OpenProcessToken() LookupPrivilegevalue() AdjustTokenPrivileges() / / / / / / / / / / / 代码详解——OpenProcessToken()函数 此函数可以得到当前进程的访问令牌的句柄 BOOL OpenProcessToken( HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle ); 参数ProcessHandle:是要修改访问权限的进程句柄; 参数DesiredAccess:指定要进行的操作类型,如要修改令牌,需要指定本参数为TOKEN_ADJUST_PRIVILEGES。 参数TokenHandle:是返回的访问令牌指针; 代码详解——AdjustTokenPrivileges()函数 调用此函数可以对这个访问令牌进行修改 BOOL AdjustTokenPrivileges( HANDLE TokenHandle, BOOL DisableAllPrivileges, PTOKEN_PRIVILEGES NewState, DW
显示全部
相似文档