C# NetworkInterface.GetAllNetworkInterfaces() 返回空列表 - 网络接口初始化尚未完成?

问题描述 投票:0回答:1

我用 C# (.NET 4.6.2) 开发一个应用程序,该应用程序通过 WiX 3 的安装程序构建作为 Windows 服务安装。该服务在 Windows 启动时自动启动。

应用程序启动时,可用网络接口列表通过

NetworkInterface.GetAllNetworkInterfaces()
加载。 有时,在运行 Windows 11 的计算机上,返回的列表为空,我无法找出原因。

我的猜测(或者更好的希望): 存在一个内置的 Windows 服务,可以执行某种网络接口初始化。在系统启动我的服务之前,该服务启动尚未完成。或者我的服务启动安排在网络服务启动之前。这两种情况都可以解释为什么返回的接口列表为空。

所以我的问题是:这样的网络服务是否存在,服务的名称是什么?

如果是这样,我也许可以直接通过 WiX 功能注册服务依赖项,而无需运行,例如调用

sc triggerinfo start/networkon
的自定义操作。但是,话虽如此,我什至不确定
sc triggerinfo
是否可以解决问题。

c# .net wix windows-services
1个回答
0
投票

我最终将服务的启动类型设置为手动,并通过自定义操作中的 p/invoke 添加启动触发器。

触发器的作用与

sc triggerinfo start/networkon
相同。如果在启动系统时网络接口准备就绪,我的服务就会启动。

MS 文档: https://learn.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-changeserviceconfig2w

© www.soinside.com 2019 - 2024. All rights reserved.