远程开关机程序

      背景:有一个营业厅很大,有两层,大致拥有十多台客户体验机,每台体验机其实都是一台电脑,其中主机集中放在后台的机房里,显示器和鼠键在前台,操作系统安装有美萍软件。这样就产生了一个日常问题:每天都需要到机房里把每台电脑逐个开机,下班后有需要每台电脑逐个解锁美萍然后关机(当然不排除拉电闸这种高效方法)。在这种情景下就萌生了要一个远程开关机的程序这么个需求。

首先说关机这事吧。这个实现起来途径很多,难度不大。例如windows系统便自己拥有允许远程关机这么的一个命令:

shutdown [/m \\computer]

shutdown命令允许向远程计算机发送关机指令,当然需要远程计算机端授权允许才行,如何授权?可以在组策略里找到相关选项;其次,就是使用软件关机命令,使用软件实现调用系统的api从而实现关机,这个为代码实现方法;还有就是可以使用批处理的at命令,执行计划任务,当到达下班时间便自动关机。

最后我选择了第二种,软件实现方法。排除第一种方法,是对于系统完整性和对部署机的不了解决定的,在程序正式做好投入使用之前我是没到现场见过那些体验机的,即我对目标机器完全不了解,系统是否为精简版、登录需要密码不?其次在技术研究的时候,使用了2台笔记本做实验,发现有一台无法实现关机,问题一定是处在系统配置及自身上,但是作为非专业windows维护人员,又无法通过更改配置解决问题。要是营业厅也出现这样的机器无法解决就不好了;第3中方法就太简单了,配置好计划任务后下班时间自动关机,但是领导不采纳,估计就是觉得它缺乏控制力。

开机,这个问题已开始觉得比较麻烦,后来发现这个非常容易,因为网卡正好具备了一个叫做“Wake On LAN”的功能,简单的说一下,“wake on lan” 原理。首先需要bios支持,打开bios设置,大概在电源管理里把wake on lan 设置为 enable 使能。然后向欲开机的的主机的子网发送一个广播包,包的内容为:6个“FF"+16个目标主机网卡地址。例如目标主机的mac地址是“00010203040506”,那么这个包的内容就是

FFFFFFFFFFFF0001020304050600010203040506000102030405060001020304050600010203040506

0001020304050600010203040506000102030405060001020304050600010203040506

0001020304050600010203040506000102030405060001020304050600010203040506

00010203040506

注意中间没有回车。

将以上数据以udp方法发送到7或者9端口上。这样便实现了远程开机功能。

       开机和关机的技术点就这么个解决方法。接着再说说界面问题,界面是个大问题,不知道是不是由于要把这个软件作为营业厅提高工作效率的创新工程,要求界面一定要好看,无奈经过几番修改仍达不到领导理想中的界面,请领导描述具体外观要求,又只说“要漂亮”。幸得时间有限,改到最后限期不满也得接受了。

GUI集设计和控制为一体,通过工具栏里新增布局面板和往布局面板里新增电脑,鼠标自由拖动面板和电脑的位置。右键设置参数,可自定义面板颜色和文字,通过高亮度电脑表示该主机ping得通。

界面截图

 

 

如果有兴趣了解的话,在下一篇文章再具体介绍代码实现方式。

 应楼下要求,代码打包  ,代码分析要下次

http://files.cnblogs.com/topdog/WakeAndShutdown.zip 

posted @ 2011-10-30 10:17 看那边的人 阅读(...) 评论(...) 编辑 收藏