8

Mi servicio de Windows necesita crear/eliminar ciertas reglas del firewall de Windows. Para esto me interfaz con NetFwTypeLib en <windows>\system32\hnetcfg.dll a través de COM. Funciona muy bien en mi 64-bit 7 máquina Windows, pero las pruebas en otra máquina de 64 bits de Windows 7 tira el siguiente error:Implementación de NetFwTypeLib para administrar el Firewall de Windows

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. 

Tengo la sensación de que si lo integrar e instalar el montaje con mi aplicación, tendría problemas con diferentes versiones de Windows y entre 32 bits y 64 bits.

¿Cómo soluciono este problema de implementación de ensamblaje faltante?


Editar: Esto parece ser un VS2010 issue para cualquier marco de destino, excepto 4.0. ¿Alguien tiene una solución para esto?

+0

¿Ha encontrado una solución para esto? Necesito usar la cosa asme – Ghita

Respuesta

1

¡Qué extraño error! Lo mejor que puedo pensar es que no confíe en la versión System32 del DLL, cópiela en su carpeta y llámela desde allí. Por lo que sé, no creo que la DLL deba entrar en conflicto con las diferentes computadoras de bits, pero si lo hacen, simplemente obtenga una DLL diferente de una computadora de 32 bits y tenga descargas separadas para x64 y x86. ¡Buena suerte!

EDITAR: Además, he tenido algunos problemas con la programación en 3.5 o inferior en VS2010. Trate de obtener una versión de Visual C# Express 2008 y tratar con eso (por lo general corrige un montón de errores con degradar .net versiones)

1

tuve un problema con esta misma DLL cuando se trabaja en Visual Studio 2012. Para mí la solución era mover manualmente el interop.NetFwTypeLib.dll al directorio en el que estaba trabajando. Esto pareció solucionar el problema para mí. Espero que ayude

7

El objeto NetFwTypeLib no reside en la biblioteca hnetcfg.dll en Windows 7 Ultimate. Por el contrario, reside en FirewallAPI.dll en% system32% \ FirewallAPI.dll (por ejemplo, c: \ windows \ system32 \ FirewallAPI.dll).

usando NetFwTypeLib; // Agregar referencia % SystemRoot% \ System32 \ FirewallAPI.dll

Cuestiones relacionadas