【问题标题】:Deploying NetFwTypeLib to manage the Windows Firewall部署 NetFwTypeLib 来管理 Windows 防火墙
【发布时间】:2011-05-16 19:47:12
【问题描述】:

我的 Windows 服务需要从 Windows 防火墙创建/删除某些规则。为此,我通过 COM 与<windows>\system32\hnetcfg.dll 中的NetFwTypeLib 交互。 在我的 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 之外的任何目标框架。有没有人解决这个问题?

【问题讨论】:

  • 您找到解决方案了吗?我需要使用 asme 的东西

标签: c# deployment assemblies filenotfoundexception windows-firewall


【解决方案1】:

NetFwTypeLib 对象不在 Windows 7 Ultimate 上的 hnetcfg.dll 库中。相反,它驻留在 %system32%\FirewallAPI.dll 的 FirewallAPI.dll 中(例如 c:\windows\system32\FirewallAPI.dll)。

使用 NetFwTypeLib; // 添加参考 %SystemRoot%\System32\FirewallAPI.dll

【讨论】:

    【解决方案2】:

    在 Visual Studio 2012 中工作时,我遇到了同样的 dll 问题。 对我来说,解决方法是将interop.NetFwTypeLib.dll 手动移动到我正在使用的目录中。这似乎为我解决了这个问题。希望对你有帮助

    【讨论】:

      【解决方案3】:

      多么奇怪的错误!我能想到的最好的办法是不要依赖DLLSystem32 版本,将其复制到您的文件夹中并从那里调用它。据我所知,我认为 DLL 不应该与不同位的计算机发生冲突,但如果他们这样做了,那么只需从 32 位计算机获取不同的 DLL 并分别下载 x64x86。祝你好运!

      编辑:另外,我在VS2010 中使用 3.5 或更低版本进行编程时遇到了一些问题。尝试获取 visual c# express 2008 版本并尝试使用它(通常会通过降级 .net 版本修复很多错误)

      【讨论】:

        猜你喜欢
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-20
        • 2013-07-25
        相关资源
        最近更新 更多