远程锁定计算机,远程关机

随着计算机技术及网络技术的发展,网络的应用越来越广泛,计算机不仅可以控制本地的设备, 还可通过网络控制远端的设备,网上监控便应运而生。将远程控制应用于各种网络管理软件中,已成为网络技术管理的重要手段。远程关机也是其中的一种。这里介绍一种远程关机的实现方式。

中文名

远程关机

外文名

remote shutdown

特    点

方便、效率高应    用

计算机网络通信

目    的

远程控制计算机关机

领    域

计算机

远程关机概述

编辑

语音

随着计算机网络通信技术的迅猛发展, 网络的应用越来越广泛, 计算机不仅可以控制本地的设备, 还可通过网络控制远端的设备, 计算机网络控制技术离不开网络编程。 相比众多编写网络通信软件的工具和方法,使用Winsock控件进行网络编程简单而且有效, 因而用处颇为广泛, 成为一种主要技术。 Winsock控件支持UDP和TCP两种协议,可以方便地实现了服务端和客户端的连接,在利用Winsock控件进行开发时,程序员并不用过多了解协议的内容,及网络间的关系和理论,也不需要调用低级的Socket通用程序接口,只需要使用Winsock, 由W insock寻找并利用已经安装好的底层协议,正确设置控件的属性、方法、 事件,就可开发出相关程序。实现计算机之间的双向数据交换。 本文主要介绍基于TCP/IP协议的Windows环境下使用Vb语言进行W insock网络编程的原理和方法,实现C/S模式的一种网络通信。这里介绍了如何实现通过网络控制远程计算机关机[1]

远程关机设计思想

编辑

语音

本系统基于C/S体系结构设计, C/S模式是一种传统的开发模式,适用于用户有限的局域网环境。 在这种模式下,客户端与服务器直接相连, 因此响应速度快。开发费用较低,周期也较短。 服务器端(控制端)运行Server程序,在每台客户端(被控端)上也需要运行专门的Client程序。 通过修改注册表信息, 将Client的可执行文件加到HKEY -LOCAL-MACHINE\SOFTW ARE\Microsoft\W indows\CurrentVersion\Run下,使Client程序在每次开机时能够自动运行, 运行后两端程序可以通过IP地址建立连接,进行数据传递, 以达到通信的目的。 远程关机功能模块连接在Client中, Server根据需要向Client发送不同的命令(字符串), Client根据接受到的命令调用不同的功能模块,执行相应的功能, 实现管理机对被管理机的远程控制。在WindowsNT/2000系统中,必需先调用API函数,获取关闭计算机的权限, 然后才能关闭计算机。 可以将这个过程写入客户端程序中, 在执行关机命令之前先执行此步骤以获取权限。 所以具体的远程关机的步骤是: 第一步利用winsock控件取得通信连接; 第二步为当前进程获取关机权限; 第三步根据服务器发送的命令, 客户机调用ExitW indowsEx函数实现关机、 注销、重启[1]

远程关机系统实现

编辑

语音

远程关机winsock连接

Winsock在计算机中提供了一个通信端口, 通过这个端口, 一台计算机可以和网络中任何具有Winsock端口的计算机通信, 利用Winsock控件可以与远程计算机建立连接, 并通过用户数据文报协议(UDP)或者传输控制协议(TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。本系统采用了后者, 通信过程为:

服务器端:

1)设置服务端的监听端口LocalPort属性, 调用Listen方法进行监听, 进行等待状态后, 方能接收客户请求。

2)当客户端发同请求连接时(Connect), 服务器端产生ConnectionRequest事件, 要响应连接, 就要调用Accept方法接受客户端的requestID请求, 此后服务端和客户端的连接开始建立。

客户端:

1)设置客户端的RemoteHost和RemotePort属性,分别与服务器的IP地址, 监听端口为同一个值。 然后调用Connect方法向服务器提交连接请求。

2)服务端和客户端连接上后, 就可以相互用SendData方法发送数据和GetData方法接收数据了。 当接收数据到达时,发生DataArrival事件, 可根据DataArrival事件判断调用的事件。 当服务器或客户端请求关闭连接时,调用Close方法即可[1]

远程关机调用API函数获取关机权限进行关机

关闭Windows所调用的API函数是ExitWindowsEx,而WindowsNT/2000基于安全性的考虑, 必须先以API函数AdjustTokenPrivileges设置安全级别, 才能关机。在Windows2000/NT下面, 各种与系统有关的操作, 比如: 关闭系统, 添加设备或者修改系统时间等,必须要具有一定的权限才能进行。 系统为每一个登录的用户设置了各种权限, 这些权限放到“访问令牌(access token)” 中。如果要在程序中进行授权的操作, 必须要将访问令牌中的这些操作设为可行的才能使用。 我们要修改一个进程的访问令牌, 先调用GetCurrentProcess函数取得当前进程访问令牌的句柄,然后调用OpenProcessToken函数打开当前进程的访问令牌, 接着调用LookupPrivilegeValue函数取得你想提升的权限的值, 最后调用AdjustTokenPrivileges函数给当前进程的访问令牌增加权限就可以了[1]

远程关机过程调用方法

在编程中, 在Client的DataArrival事件中完成过程调用,

PrivateSubClientDataArrival(ByVal bytesTo2talAsLong)

Dim i As st ring

Client.GetData I/‘接收管理机发送的命令字符串

selectcasei

case/‘关机’

AdjustTokenPrivilegesForNT

ExitW indowsEx EW X _SHUTDOW N,0/‘如果为“关机” 则调用远程关机过程

case/‘重启’

AdjustTokenPrivilegesForNT

ExitW indowsEx EW X _REBOOT, 0/‘如果为“重启”则调用远程重启过程case‘注销’

AdjustTokenPrivilegesForNT

ExitW indowsEx EW X _ LOGOFF,0/‘如果为“注销”则调用远程注销过程

End select

End Sub

通过Server程序可分别设置关机, 重启, 注销三个按钮, 单击按钮时分别向Client发送“关机”,“重启”,“注销” 字符串, 这时Client根据接收到的不同字符串可选择执行不同的操作以完成相应的任务[1]

上述VB代码在Win2000/W in98下调试通过, 并经过实际运行效果良好, 在VB环境下利用Winsock控件进行网络编程, 开发一种基于TCP协议的服务器和客户机应用程序, 能够实现服务器端与客户端之间进行数据通讯, 以实现一个简单的远程关机程序, 经扩展可以实现对多台客户机进行控制,初步证实了用Visual Basic对远程控制系统的可设计性和可实现性,对网络远程控制的基本实现方式作了尝试性的探讨, 以上示例采用的方法思路相对简单, 在此基础上略加改造, 可以形成功能复杂的计算机网络管理系统, 用于屏幕图像抓取、 文件传输、 远程监控等。 在网络化时代, 对局域网内部的计算机管理作用重大, 通过远程控制可以有效提高工作效率, 大量节约工作时间。

参考资料

1.

何增颖 .基于Winsock网络通信的远程关机技术 [J].信息通信 , 2007 , 24 (5) :62-64

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值