我的 Windows 服务需要从 Windows 防火墙中创建/删除某些规则。为此,我与 NetFwTypeLib
进行交互在<windows>\system32\hnetcfg.dll
通过 COM。 在我的 64 位 Windows 7 机器上运行良好,但在另一台 64 位 Windows 7 机器上测试会抛出以下错误:
Service cannot be started. System.IO.FileNotFoundException:
Could not load file or assembly 'Interop.NetFwTypeLib,
Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies.
The system cannot find the file specified.
我有一种感觉,如果我将程序集嵌入并安装到我的应用程序中,我会遇到不同版本的 Windows 以及 32 位和 64 位之间的问题。
我该如何解决这个缺少的程序集部署问题?
编辑:这似乎是一个 VS2010 issue对于除 4.0 以外的任何目标框架。有人对此有解决办法吗?
最佳答案
NetFwTypeLib 对象不驻留在 Windows 7 Ultimate 上的 hnetcfg.dll 库中。相反,它位于 %system32%\FirewallAPI.dll 的 FirewallAPI.dll 中(例如 c:\windows\system32\FirewallAPI.dll)。
使用 NetFwTypeLib;// 添加引用 %SystemRoot%\System32\FirewallAPI.dll
关于c# - 部署 NetFwTypeLib 以管理 Windows 防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296240/