欢迎来到天天文库
浏览记录
ID:40230758
大小:650.00 KB
页数:19页
时间:2019-07-27
《Visual C++网络编程技术-08》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、远程关机和开机授课教师:网络编程——导入在局域网管理软件中,一个最常用的功能就是远程关机和开机功能。一个管理员通常管理几十台电脑,当需要开机或关机时,如果一台一台的操作就太麻烦了,因此通常机房管理软件中都配备了远程开机或关机的功能,管理员只需在一台计算机上操作,就可以控制所有计算机开机、关机或者重启。本章,我们就来介绍一下怎样用C++编程实现远程关机和远程唤醒计算机的功能。本章要点远程关机shutdown用木马程序实现远程关机远程唤醒计算机远程关机——shutdownshutdown命令在WindowsXP中,新增了一
2、条命令行工具“shutdown”,其作用是“关闭或重新启动本地或远程计算机”。利用它,我们不但可以关闭或重新启动计算机,还可以实现定时关机、远程关机。例如,在30秒内关闭计算机名为RANRAN的机器命令是:shutdown–s–m\RANRAN-t30为什么出现“拒绝访问”的情况?要在客户计算机(被远程关闭的计算机)中赋予guest用户远程关机的权限。可利用Windows“组策略”或“管理工具”中的“本地安全策略”来实现。代码详解——InitiateSystemShutdown()实现关闭或重启计算机的功能。如果函数
3、调用成功,则返回值为TRUE;否则,返回值为FALSE。BOOLInitiateSystemShutdown(LPTSTRlpMachineName,LPTSTRlpMessage,DWORDdwTimeout,BOOLbForceAppsClosed,BOOLbRebootAfterShutdown);参数lpMachineName:指定以MULL终止的用来指定要关机的网络名称的字符串。如果为NULL,则该函数关掉本地计算机。参数lpMessage:指向一个要显示在关机对话框中的消息的字符串。参数dwTimeout:
4、指定对话框应该显示的延迟时间(按秒计)。参数bForceAppsClosed:指定对变化未做保存的应用程序是否被强制关闭。如果这个参数为TRUE,则应用程序被关闭。如果参数为FALSE,则显示一个对话框以提示用户关闭这些应用程序。参数bRebootAfterShutdown:指定计算机关机之后是否立即重启。如果参数为TRUE,则计算机重启。如果参数为FALSE,则系统将所有高速缓存刷新到磁盘上,清除屏幕,并且显示一条消息,指示关掉电源是安全的。设置进程访问权限调用InitiateSystemShutdown()函数关闭
5、远程计算机需要先获得SE_SHUTDOWN_NAME权限。涉及到的函数:OpenProcessToken()LookupPrivilegevalue()AdjustTokenPrivileges()代码详解——OpenProcessToken()函数此函数可以得到当前进程的访问令牌的句柄BOOLOpenProcessToken(HANDLEProcessHandle,DWORDDesiredAccess,PHANDLETokenHandle);参数ProcessHandle:是要修改访问权限的进程句柄;参数Desire
6、dAccess:指定要进行的操作类型,如要修改令牌,需要指定本参数为TOKEN_ADJUST_PRIVILEGES。参数TokenHandle:是返回的访问令牌指针;代码详解——AdjustTokenPrivileges()函数调用此函数可以对这个访问令牌进行修改BOOLAdjustTokenPrivileges(HANDLETokenHandle,BOOLDisableAllPrivileges,PTOKEN_PRIVILEGESNewState,DWORDBufferLength,PTOKEN_PRIVILEGES
7、PreviousState,PDWORDReturnLength);参数TokenHandle:是访问令牌的句柄。参数DisableAllPrivileges:决定是进行权限修改还是除能(Disable)所有权限。参数NewState:指明要修改的权限参数BufferLength:是结构PreviousState的长度。参数PreviousState:存放修改前的访问权限的信息,可空。参数ReturnLength:为实际PreviousState结构返回的大小。代码详解——LookupPrivilegevalue()函
8、数获得一个权限对应的LUID值BOOLLookupPrivilegevalue(LPCTSTRlpSystemName,LPCTSTRlpName,PLUIDlpLuid);参数lpSystemName:是系统的名称,如果是本地系统只要指明为NULL。参数lpName:是指明了权限的名称参数lpLuid:是返回LUID的指针。远程
此文档下载收益归作者所有