8

Mon service Windows doit créer/supprimer certaines règles du pare-feu Windows. Pour cela, je interface avec NetFwTypeLib en <windows>\system32\hnetcfg.dll via COM. Il fonctionne très bien sur mon 64 bits machine Windows 7, mais les tests sur une autre machine 64 bits de Windows 7 lance l'erreur suivante:Déploiement de NetFwTypeLib pour gérer le pare-feu 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. 

J'ai le sentiment que si j'intégrer et installer l'assemblage avec mon application, j'aurais des problèmes avec différentes versions de Windows et entre 32 bits et 64 bits. Comment puis-je résoudre ce problème de déploiement d'assembly manquant?


Edit: Cela semble être un VS2010 issue pour tout cadre cible sauf 4.0. Quelqu'un a-t-il une solution pour cela?

+0

Avez-vous trouvé une solution pour cela? Je dois utiliser la chose asme – Ghita

Répondre

1

Quelle étrange erreur! Le mieux que je puisse penser est de ne pas compter sur la version System32 du DLL, copiez-le dans votre dossier et appelez-le à partir de là. À ma connaissance, je ne pense pas que la DLL devrait entrer en conflit avec les différents ordinateurs bit, mais s'ils le font alors obtenir une DLL différente d'un ordinateur 32 bits et avoir des téléchargements distincts pour x64 et x86. Bonne chance!

EDIT: Aussi, j'ai eu quelques problèmes avec la programmation en 3.5 ou moins en VS2010. Essayez d'obtenir une version de # visuels c exprimer 2008 et essayer avec qui (fixe généralement beaucoup d'erreurs avec déclassement .net versions)

1

J'ai eu un problème avec ce même dll lorsque vous travaillez dans Visual Studio 2012. Pour moi le correctif consistait à déplacer manuellement le interop.NetFwTypeLib.dll dans le répertoire dans lequel je travaillais. Cela semblait régler le problème pour moi. Espérons que cela aide

7

L'objet NetFwTypeLib ne réside pas dans la bibliothèque hnetcfg.dll sous Windows 7 Ultimate. Plutôt, il réside dans FirewallAPI.dll à% system32% \ FirewallAPI.dll (par exemple c: \ windows \ system32 \ FirewallAPI.dll).

en utilisant NetFwTypeLib; // Ajouter une référence % SystemRoot% \ System32 \ FirewallAPI.dll