Mein Windows-Dienst muss bestimmte Regeln aus der Windows-Firewall erstellen / entfernen. Dazu interfeiere ich mit NetFwTypeLib
in <windows>\system32\hnetcfg.dll
via COM. Es funktioniert großartig auf meinem 64-Bit-Windows 7-Computer , aber das Testen auf einem anderen 64-Bit-Windows 7-Computer gibt den folgenden Fehler aus:
Ich habe das Gefühl, dass wenn ich die Assembly mit meiner Anwendung einbette und installiere, ich Probleme mit verschiedenen Versionen von Windows und zwischen 32-Bit und 64-Bit hätte.
Wie löse ich dieses fehlende Problem mit der Bereitstellung von Assemblys?
Bearbeiten: Dies scheint ein VS2010-Problem für jedes Zielframework außer 4.0. Hat jemand eine Lösung dafür?
Das NetFwTypeLib-Objekt befindet sich nicht in der hnetcfg.dll-Bibliothek unter Windows 7 Ultimate. Stattdessen befindet es sich in FirewallAPI.dll bei% system32% \ FirewallAPI.dll (zB c: \ windows \ system32 \ FirewallAPI.dll).
mit NetFwTypeLib; // Referenz hinzufügen % SystemRoot% \ System32 \ FirewallAPI.dll
Was für ein seltsamer Fehler! Das Beste, was mir einfällt, ist, dass man sich nicht auf die System32
Version von DLL
verlässt, sondern in den Ordner kopiert und von dort aus aufruft. Aus meiner Kenntnis, ich denke nicht, dass die DLL Konflikte mit den verschiedenen Bit-Computer, aber wenn sie tun, dann nur eine andere DLL von einem 32-Bit-Computer erhalten und separate Downloads für x64
und x86
haben. Viel Glück!
EDIT: Außerdem hatte ich Probleme mit der Programmierung in 3.5 oder niedriger in VS2010
. Versuchen Sie, eine Version von visual c # express 2008 zu erhalten und versuchen Sie es (in der Regel werden viele Fehler beim Herunterstufen von .net
versions behoben)
Ich hatte ein Problem mit dieser DLL, wenn ich in Visual Studio 2012 arbeite.
Für mich bestand die Lösung darin, interop.NetFwTypeLib.dll
manuell in das Verzeichnis zu verschieben, in dem ich gerade arbeitete. Dies schien das Problem für mich zu beheben. Hoffe es hilft
Tags und Links c# deployment assemblies filenotfoundexception windows-firewall