Развертывание NetFwTypeLib для управления брандмауэром Windows - PullRequest
8 голосов
/ 28 ноября 2010

Моей службе 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 выпуск для любой целевой платформы, кроме 4.0.У кого-нибудь есть исправление для этого?

Ответы [ 3 ]

10 голосов
/ 20 июня 2014

Объект NetFwTypeLib не находится в библиотеке hnetcfg.dll в Windows 7 Ultimate. Вместо этого он находится в FirewallAPI.dll в% system32% \ FirewallAPI.dll (например, c: \ windows \ system32 \ FirewallAPI.dll).

с использованием NetFwTypeLib; // Добавить ссылку % SystemRoot% \ System32 \ FirewallAPI.dll

1 голос
/ 07 декабря 2012

У меня была проблема с той же самой DLL при работе в Visual Studio 2012. Для меня исправлением было ручное перемещение interop.NetFwTypeLib.dll в каталог, из которого я работал.Это, казалось, решило проблему для меня.Надеюсь, это поможет

1 голос
/ 27 июля 2011

Какая странная ошибка! Лучшее, о чем я могу думать, - это не полагаться на System32 версию DLL, скопировать ее в свою папку и вызвать ее оттуда. Насколько я знаю, я не думаю, что DLL должна конфликтовать с разными битовыми компьютерами, но если они это сделают, просто получите другую DLL с 32-битного компьютера и загрузите отдельно для x64 и x86. Удачи!

РЕДАКТИРОВАТЬ: Кроме того, у меня были некоторые проблемы с программированием в 3,5 или ниже в VS2010. Попробуй получить версию visual c # express 2008 и попробуй с этим (обычно исправляет много ошибок при понижении версии .net)

...