今天聊的和暖通没有关系。
前两天孝夕夕突然想起来,在中学计算机课上,老师有时会给同学发弹窗,比如这样:
孝夕夕想怀旧一下,于是在命令提示符里输入netsend命令,却是见到一番不同景象:
百度了才知道,XP系统之后就取消了netsend命令。。。。
现在用的win10,命令变成了MSG,权限也被加以限制,不能像XP那样轻轻松松把弹窗传遍全网了。
孝夕夕又好奇了,决定试一下新命令。
首先,要知道接收方计算机的用户名和密码,并添加在凭据管理器里面——也可以在命令提示符用cmdkey命令(命令格式是cmdkey/add:192.168.1.***/user:***/pass:***)。
然后MSG/server:192.168.1.2*\”helloworld\”
(⊙﹏⊙)报错了。。。。
百度说要把接收方计算机AllowRemoteRPC由0改为1(路径是hkey_localmachine-system-CurrentControlSet-Control-terminalserver-AllowRemoteRPC),孝夕夕亲测这个参数不起作用。
孝夕夕觉得还是先ping一下接收方计算机吧。居然ping不通!而接收方计算机明明可以正常上网,网线并没有问题啊。
百度说是防火墙的原因。控制面板–WindowsDefender防火墙-高级设置-入站规则-文件和打印机共享(回显请求-ICMPv4-In)启用规则后就可以正常ping通了。
然而,ping通了还是1722错误。一定还有其他的入站规则没有开启。孝夕夕猜测只是一个规则没有启用,于是用二分法查找,最终确定了是需要启用Netlogon服务(NP-In)——别问我这是什么,我也不知道,开启就对了。
至此,终于可以顺利发送弹窗消息了。
但是每次都要去命令提示符写命令,还是麻烦了些。那咱们就写一个批处理文件吧。
1.因为要以管理员身份运行,所以第一段代码用来获取权限(这段不会写,百度了一段);
2.获取当前文件的文件名并发送出去;
3.大家知道127是本机地址,所以最后给自己一个弹窗提示。
好了,3段源码如下:
@echooff
>nul2>&1\”%SYSTEMROOT%\\system32\\cacls.exe\”\”%SYSTEMROOT%\\system32\\config\\system\”
if\’%errorlevel%\’NEQ\’0\'(
gotoUACPrompt
)else(gotogotAdmin)
:UACPrompt
echoSetUAC=CreateObject^(\”Shell.Application\”^)>\”%temp%\\getadmin.vbs\”
echoUAC.ShellExecute\”%~s0\”,\”\”,\”\”,\”runas\”,1>>\”%temp%\\getadmin.vbs\”
\”%temp%\\getadmin.vbs\”
exit/B
:gotAdmin
ifexist\”%temp%\\getadmin.vbs\”(del\”%temp%\\getadmin.vbs\”)
setname=%~n0
MSG/server:192.168.1.2*%name%
MSG/server:127.0.0.1*\”发送成功\”
把源码粘到文本文档,文件后缀改为.bat。想发什么消息就把文件名改成什么,双击就发送出去了:
终于可以愉快地玩耍了。
对了,弹窗消息默认留驻显示1分钟,超时会自动关闭。可以用/time修改留驻时间,比如/time:100
最后还有一点没有明白,孝夕夕的另一条电脑并没有启用Netlogon服务(NP-In),却也可以正常收发消息,真是捉摸不透。
注:win10可能不容易找到文中加粗内容的入口,不过这些都可以问小娜,她会告诉你他们在哪里。