部署NetFwTypeLib以管理Windows防火墙

Pet*_*ron 8 c# deployment assemblies windows-firewall filenotfoundexception

我的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.
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,如果我使用我的应用程序嵌入并安装程序集,我会遇到不同版本的Windows以及32位和64位之间的问题.

如何解决这个缺少的装配部署问题?


编辑:这似乎是除了4.0之外的任何目标框架的VS2010问题.有人有解决方法吗?

Mar*_*kus 12

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

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


小智 1

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

编辑:另外,我在 3.5 或更低版本中编程时遇到了一些麻烦VS2010。尝试获取Visual C# Express 2008.net的版本并尝试使用它(通常可以通过降级版本修复很多错误)