您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 网络编程远程关机和开机
远程关机和开机授课教师:网络编程——网络编程技术导入在局域网管理软件中,一个最常用的功能就是远程关机和开机功能。一个管理员通常管理几十台电脑,当需要开机或关机时,如果一台一台的操作就太麻烦了,因此通常机房管理软件中都配备了远程开机或关机的功能,管理员只需在一台计算机上操作,就可以控制所有计算机开机、关机或者重启。本章,我们就来介绍一下怎样用C++编程实现远程关机和远程唤醒计算机的功能。网络编程技术本章要点远程关机shutdown用木马程序实现远程关机远程唤醒计算机网络编程技术远程关机——shutdownshutdown命令在WindowsXP中,新增了一条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可以关闭或重新启动计算机,还可以实现定时关机、远程关机。例如,在30秒内关闭计算机名为RANRAN的机器命令是:shutdown–s–m\\RANRAN-t30网络编程技术为什么出现“拒绝访问”的情况?要在客户计算机(被远程关闭的计算机)中赋予guest用户远程关机的权限。可利用Windows“组策略”或“管理工具”中的“本地安全策略”来实现。网络编程技术代码详解——InitiateSystemShutdown()实现关闭或重启计算机的功能。如果函数调用成功,则返回值为TRUE;否则,返回值为FALSE。BOOLInitiateSystemShutdown(LPTSTRlpMachineName,LPTSTRlpMessage,DWORDdwTimeout,BOOLbForceAppsClosed,BOOLbRebootAfterShutdown);参数lpMachineName:指定以MULL终止的用来指定要关机的网络名称的字符串。如果为NULL,则该函数关掉本地计算机。参数lpMessage:指向一个要显示在关机对话框中的消息的字符串。参数dwTimeout:指定对话框应该显示的延迟时间(按秒计)。参数bForceAppsClosed:指定对变化未做保存的应用程序是否被强制关闭。如果这个参数为TRUE,则应用程序被关闭。如果参数为FALSE,则显示一个对话框以提示用户关闭这些应用程序。参数bRebootAfterShutdown:指定计算机关机之后是否立即重启。如果参数为TRUE,则计算机重启。如果参数为FALSE,则系统将所有高速缓存刷新到磁盘上,清除屏幕,并且显示一条消息,指示关掉电源是安全的。网络编程技术设置进程访问权限调用InitiateSystemShutdown()函数关闭远程计算机需要先获得SE_SHUTDOWN_NAME权限。涉及到的函数:OpenProcessToken()LookupPrivilegevalue()AdjustTokenPrivileges()网络编程技术代码详解——OpenProcessToken()函数此函数可以得到当前进程的访问令牌的句柄BOOLOpenProcessToken(HANDLEProcessHandle,DWORDDesiredAccess,PHANDLETokenHandle);参数ProcessHandle:是要修改访问权限的进程句柄;参数DesiredAccess:指定要进行的操作类型,如要修改令牌,需要指定本参数为TOKEN_ADJUST_PRIVILEGES。参数TokenHandle:是返回的访问令牌指针;网络编程技术代码详解——AdjustTokenPrivileges()函数调用此函数可以对这个访问令牌进行修改BOOLAdjustTokenPrivileges(HANDLETokenHandle,BOOLDisableAllPrivileges,PTOKEN_PRIVILEGESNewState,DWORDBufferLength,PTOKEN_PRIVILEGESPreviousState,PDWORDReturnLength);参数TokenHandle:是访问令牌的句柄。参数DisableAllPrivileges:决定是进行权限修改还是除能(Disable)所有权限。参数NewState:指明要修改的权限参数BufferLength:是结构PreviousState的长度。参数PreviousState:存放修改前的访问权限的信息,可空。参数ReturnLength:为实际PreviousState结构返回的大小。网络编程技术代码详解——LookupPrivilegevalue()函数获得一个权限对应的LUID值BOOLLookupPrivilegevalue(LPCTSTRlpSystemName,LPCTSTRlpName,PLUIDlpLuid);参数lpSystemName:是系统的名称,如果是本地系统只要指明为NULL。参数lpName:是指明了权限的名称参数lpLuid:是返回LUID的指针。网络编程技术远程关机——木马一个简单的木马程序分为两个部分,一个是控制端程序,一个是木马程序。木马程序接到控制端发来的关机命令,在本机执行关机动作,就实现了远程关机网络编程技术代码详解——ExitWindowEx()函数ExitWindowsEx函数可以用来关闭系统BOOLExitWindowEx(UINTuFlags,DWORDdwReserved);参数uFlags:用来指定关闭的类型,它的值有以下几种:EWX_FORCE:强制结束程序,可以在紧急情况下使用该类型,但可能会导致数据丢失。EWX_LOGOFF:关闭所有进程,然后退出用户登陆。类似windows下的注销先项。EWX_POWEROFF:关闭系统并关闭计算电源。EWX_REBOOT:关闭计算机并重新启动计算机。EWX_SHUTDOWN:安全的关闭计算机。参数dwReserved:为将来开发保留的数值,设为0即可。网络编程技术代码详解——获取操作系统版本信息OSVERSIONINFOOsInfo;OsInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);GetVersionEx(&OsInfo);OsInfo中就存放着系统版本的信息网络编程技术远程唤醒远程唤醒,主要是通过向目标主机发送特殊格式的数据包(俗称魔术包)来实现的。计算机关闭的时候,网卡可以仍然处于打开状态,并准备接收消息,也就是魔术包(MagicPacket)。网卡一旦接收到魔术包,就会试图启动计算机。魔术包必须包含特定的字节顺序,它能够封装在任何封包(IPx、IP或者其他)中。此功能依赖于硬件性能。网络编程技术支持远程唤醒功能的硬件条件1.主板和网卡必须都支持远程唤醒功能(目前一般的主板都支持这个功能)2.需要在CMOS中作相应的设置。要将CMOS设置中的“PowerManagementSetup”的“WakeUpOnLAN”或“ResumebyLAN”项设置为“Enable”或“On”3.必须要使用ATX电源。网络编程技术程序界面要想使用远程唤醒功能,首先必须知道要唤醒机器的MAC(MediumAccessControl)地址,MAC地址由用户输入。网络编程技术魔术包的结构6字节的头部。这个头部仅是6字节的Oxff。16X6字节数据。要产生这些数据,必须重复远程计算机的MAC地址16次FFFFFFFFFFFFMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddressMacAddress6Bytes6Bytes16*6=96BytesMacAddressMacAddressMacAddressMacAddress网络编程技术课堂练习题1.在WindowsXP中,新增了一条命令行工具,其作用是“关闭或重新启动本地或远程计算机”,这条命令行工具是。2.要修改一个进程的访问令牌,首先要获得进程访问令牌的句柄,这可以通过函数得到。3.要想使用远程唤醒功能,首先必须知道要唤醒机器的。4.远程唤醒需要向LAN中发送一个特定的封包,以便远程计算机能够接收到它,并且启动,该封包称为。
本文标题:网络编程远程关机和开机
链接地址:https://www.777doc.com/doc-3786747 .html