哪个 Windows 服务可确保网络连接

本文关键字:网络 连接 确保 Windows 服务 哪个 | 更新日期: 2023-09-27 18:36:13

我正在做一个Windows服务,它在启动时必须具有网络连接。代码是用 c# 编写的,我使用

serviceInstaller.ServicesDependedOn = new string[] { "Tcpip" };

我可以看到在Windows服务管理器上正确输入了依赖项,但是重新启动后我的服务无法启动,因为它无法连接到网络,在主机获得IP后,服务正确启动。

我尝试使用"Tcpip"和"Dhcp"服务。它应该依赖哪种服务?

服务需要网络连接,因为它的目的是通过SSH安装单元

谢谢!

哪个 Windows 服务可确保网络连接

我们一直在使依赖于网络启动的服务依赖于"服务器"服务。它的实际名称是"LanmanServer"。这对我们来说一直很好。如果你看一下它的描述,它说:

支持通过网络对此计算机进行文件、打印和命名管道共享。如果停止此服务,这些功能将不可用。如果禁用此服务,则显式依赖它的任何服务都将无法启动。

我们的想法是,如果计算机准备好执行这些功能,那么就必须启动网络。

我使用"Tcpip","Dhcp","Dnscache"。对我来说效果很好。

根据接受答案中提到的LanmanServer@user957902在Windows Server 2019上不起作用(好吧,至少对我和其他一些人而言)。

在Windows Server 2019中,我认为无法使用服务依赖项解决此问题。

我在我的 Windows 服务中通过等待互联网连接建立,使用以下代码解决了这个问题(只需调用 WaitUntilInternetConnectionAvailable 方法):

public static class WinINet
{
    [DllImport("wininet.dll")]
    public static extern bool InternetGetConnectedState(out int description, int reservedValue);
}
...
public static bool WaitUntilInternetConnectionAvailable(TimeSpan timeout, TimeSpan checkEvery)
{
    var sw = Stopwatch.StartNew();
    while (sw.Elapsed < timeout)
    {
        if (IsInternetConnectionAvailable())
        {
            return true;
        }
        Thread.Sleep(checkEvery);
    }
    return false;
}
public static bool IsInternetConnectionAvailable()
{
    return WinINet.InternetGetConnectedState(out _, 0);
}