前言
由于微软傻逼,我的NAS会不定期自动重启(使用win10 1709),所以我需要知道NAS在什么时候重启,并且远程开启utorrent。研究了许久,找到了一个还比较好的实施方案。
具体改进
前三步没有问题,照做即可
在第四步编码过程中,有小部分地方可以优化
- 优化一
protected override void OnStart(string[] args)
{
createOrderTimer = new System.Timers.Timer();
createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(Page_Load);
createOrderTimer.Interval = 60000;
createOrderTimer.Enabled = true;
createOrderTimer.AutoReset = false;
Ping ping = new Ping();
PingReply pr = ping.Send("baidu.com");
do
{
pr = ping.Send("baidu.com");
if (pr.Status == IPStatus.Success)
{
createOrderTimer.Start();
}
} while (pr.Status != IPStatus.Success);
}
......
client.Send(mailMessage);
//Context.Response.Write("发送成功");
//StopWindowsService("AutoSendEmail");
//将停止服务注释掉,实际上StopWindowsService与StartWindowsService都不会用到
......
将原本在Page_Load
中的ping判断提前,并取消createOrderTimer
的循环。即循环外提,原来的循环必须靠停止服务。而在实际实验中发现,停止服务会让下次无法自动重启。这一点可能是环境原因。并且将延迟增大到了1分钟,防止意外状况的出现。
- 优化二
mailMessage.Subject = System.Environment.MachineName + "开机完成";
//邮件内容。
mailMessage.Body = "这是一封自动发送的邮件,发送的本地时间为:"+DateTime.Now;
原本写死了,这下可以拓展到不同的机器,方便同时远程得知不同设备的状况
- 安装部分冗余解释
实际上我们不需要按照原文设置一个批处理文件,自行更改即可
-
用管理员模式运行CMD。如不能直接以管理员模式运行CMD,可以右键开始图标,运行管理员模式的power shell,再输入cmd,即为管理员模式运行CMD
Windows PowerShell 版权所有 (C) Microsoft Corporation。保留所有权利。 PS C:\Users\ljz131> cmd Microsoft Windows [版本 10.0.16299.611] (c) 2017 Microsoft Corporation。保留所有权利。 C:\Users\ljz131>
进入
C:\Windows\Microsoft.NET\Framework\v4.0.30319\
-
直接以
InstallUtil
为前缀安装或卸载//安装 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ InstallUtil "......\WindowsService1.exe" //双引号内为WindowsService1.exe所在的具体目录,用双引号括起来可以防止路径有空格导致CMD错误识别 //卸载 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\ InstallUtil.exe /u "......\WindowsService1.exe"
可以继续扩展的地方
本来想简单扩展一个关机邮件,但是发现并没有那么简单。虽然可以覆写OnShutdown()
与OnStop()
两个函数,但是最终都没有起到理想中的作用。因为我对这个需求不高,如果有需求的话可以继续研究。