前言

前些日子在电脑室讲课时,突然有个比较调皮的学生把全班的电脑给关机了,着实让我意料不到。虽然我也经历过学生时代在电脑室上课的生活,但当时的我们也只会互相按掉对方的主机,玩玩自己的屏幕,最多就拔掉网线来断开自己电脑的控制,没想到现在奥班的学生已经开始玩局域网关机这种“高端”技巧了。不过好歹我大学也学过c++,在下一次课我就特意观察了一下,找到了那个学生,这次因为我给了他们自由活动,他估计就没这个心思关全班的机,但也算是托他的福,学会了一点东西。
关机

shutdown命令

Windows系统自带一个名为Shutdown.exe的程序,可以用于关机操作(位置在WindowsSystem32下),一般情况下Windows系统的关机都可以通过调用程序 shutdown.exe来实现的,同时该程序也可以用于终止正在计划中的关机操作。

命令:shutdown
权限:系统管理者
用法:shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/f] /m \computer[/d [p|u:]xx:yy [/c "comment"]]

没有参数   显示帮助。这与键入 /? 是一样的。
/?         显示帮助。这与不键入任何选项是一样的。
/i         显示图形用户界面(GUI)。
           这必须是第一个选项。
/l         注销。这不能与 /m 或 /d 选项一起使用。
/s         关闭计算机。
/r         完全关闭并重新启动计算机。
/g         完全关闭并重新启动计算机。在重新启动系统后,
           重新启动任何注册的应用程序。
/a         中止系统关闭。
           这只能在超时期间使用。
/p         关闭本地计算机,没有超时或警告。
           可以与 /d 和 /f 选项一起使用。
/h         休眠本地计算机。
           可以与 /f 选项一起使用。
/hybrid    执行计算机关闭并进行准备以快速启动。
           必须与 /s 选项一起使用。
/e         记录计算机意外关闭的原因。
/o         转到高级启动选项菜单并重新启动计算机。
           必须与 /r 选项一起使用。
/m \\computer 指定目标计算机。
/t xxx     将关闭前的超时时间设置为 xxx 秒。
           有效范围是 0-315360000 (10 年),默认值为 30。
           如果超时时间大于 0,则默示为
           /f 参数。
/c "comment" 有关重新启动或关闭的原因的注释。
           最多允许 512 个字符。
/f         强制关闭正在运行的应用程序而不事先警告用户。
           如果为 /t 参数指定大于 0 的值,
           则默示为 /f 参数。
/d [p|u:]xx:yy  提供重新启动或关闭的原因。
           p 指示重新启动或关闭是计划内的。
           u 指示原因是用户定义的。
           如果未指定 p 也未指定 u,则重新启动或关闭
           是计划外的。
           xx 是主要原因编号(小于 256 的正整数)。
           yy 是次要原因编号(小于 65536 的正整数)。

使用例子

1)30秒后自动关机

shutdown -s
这个会弹出自动关机对话框,默认30秒后关机

2)1小时后自动关机

shutdown -s -t 3600

3)晚上10点钟自动关机

at 22:00 shutdown -s
这个会显示类似“新加了一项作业,其作业 ID = 1”的信息,并添加一条关机任务。

4)远程pc重启

shutdown -m \[ip地址或计算机名] -r
如果远程pc没开机或网络连接不到,会提示“找不到网络路径。”;
如果远程pc已经被锁定,会提示“计算机已经锁定而且不使用强制选项无法关机。”,添加-f选项即可;
如果命令运行成功,远程pc会显示自动关机对话框,默认有30秒的等待;
如果后悔了,可以运行“>shutdown -m \[ip地址或计算机名] -a”取消;
如果没有远程关闭的权限,会提示“拒绝访问。”,需要参考下面的说明开放远程关机权限。

远程关机权限的获取

1)修改远程pc的“本地安全策略”,为指定的用户开放权限

在Windows XP默认的安全策略中,只有Administrators组的用户才有权从远端关闭计算机,如果要给xxxx用户远程关机的权限。可利用Windows XP的“组策略”或“管理工具”中的“本地安全策略”来实现。

  1. 命令行运行gpedit.msc打开“组策略编辑器“;
  2. 导航到“计算机配置/Windows 设置/安全设置/本地策略/用户权利指派”;
  3. 修改“从远端系统强制关机”,添加xxxx用户即可。

2)获得远程IPC管理权限

如果配置第一步后还出现“拒绝访问。”,则需要在运行shutdown命令前先运行如下命令

net use \[ip地址或计算机名]ipc$ password /user:xxxx

其中password为帐号xxxx的登录密码。

3)查看局域网内的ip
需要特别说明的就是必须是同一个局域网内,如果你不知道有哪些Ip是和你在同一个局域网内的,那么可以通过arp -a查看:
arp命令

远程关机代码

虽然这个学生的确打乱了上课秩序,但他也无意间留下了自己的代码,因此这里做个记录。经过测试,只要是管理员权限,则可以关闭局域网内的所有电脑,但如果那台电脑开了防火墙,好像就能防住。

参考资料

最后修改:2020 年 12 月 31 日 09 : 48 PM
如果觉得我的文章对你有用,请随意赞赏