我目前正在开发Windows服务,该服务检查网络连接并在机器不在线时执行某些操作。
但是,对于新的SSD驱动器,Windows服务的加载速度非常快,以至于在任何网络驱动器之前都会进行初始化,这将始终导致离线消息。
Microsoft本身已使用新的Windows服务类型“自动(延迟启动)”解决了这个问题,该服务只需等待2分钟即可启动服务。这实际上是一个可怕的解决方案,因为两分钟是很长的。
我正在尝试在Windows批处理脚本(由服务执行)中实现30秒的等待时间。但是,出于某些原因,我不想使用第三方软件。
使用Windows 7,您可以使用timeout,但一个要求是能够将服务也安装到XP,而XP还没有此命令。
另一种可能性是ping trick,这也是一个肮脏的解决方案。
是否有另一个好的解决方案可以在网络驱动器连接尝试后直接获得通知,或者至少可以在XP而不是第三方使用更好的睡眠/等待可能性?
提前感谢您的回答!
答案 0 :(得分:0)
IcmpSendEcho function是要查看的功能。该函数发送ICMP echo请求并允许指定超时。回显请求可以在等待网络循环初始化期间从Windows服务中发送到localhost (127.0.0.1)
以查明网络是否已启动。