Bereitstellen von NetFwTypeLib zum Verwalten der Windows-Firewall

8

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:

%Vor%

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?

    
Petrus Theron 28.11.2010, 09:52
quelle

3 Antworten

8

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

    
Markus Hooge 20.06.2014 16:14
quelle
1

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)

    
Evan 27.07.2011 02:41
quelle
1

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

    
wjhguitarman 06.12.2012 21:44
quelle