Meine Organisation produziert eine Reihe von Windows-Anwendungen, die das Netzwerk nutzen. Wenn Benutzer unsere Software zum ersten Mal ausführen, öffnet die Windows-Firewall (falls sie ausgeführt wird) ein Popup-Fenster, das den Benutzer darüber informiert, dass unsere App (s) versuchen, das Netzwerk zu verwenden, und fordern den Benutzer auf, den Zugriff zuzulassen oder zu verweigern.
Dies tritt bei vielen anderen Apps auf (Spotify, um ein Beispiel zu nennen), aber wir möchten diese Popups verhindern, da sie für unsere Benutzer ein wenig problematisch sein können. Einige Anwendungen (MSN Messenger, GoogeTalk) funktionieren, ohne dass die Firewall den Benutzer alarmiert, und wir möchten das Gleiche tun.
Wir haben dies unter Windows XP erfolgreich durchgeführt, indem unser Installationsprogramm die entsprechenden Registrierungsschlüssel unter:
geschrieben hatHKLM \ SYSTEM \ ControlSet001 \ Dienste \ SharedAccess \ Parameters \ FirewallPolicy \ StandardProfile \ AuthorizedApplications \ List
Dies wirkt sich jedoch nicht auf Windows 7 aus - die Firewall-Popups finden weiterhin statt.
Irgendwelche Ideen, wie wir das machen können? (Unsere Installationsprogramme und Software sind alle digital signiert.)
Danke Tom Davies
Sie können Ausnahmen zur Windows-Firewall hinzufügen, indem Sie netsh aussortieren, ein Dienstprogramm, das in Windows integriert ist, aber das Dienstprogramm funktioniert anders unter Windows XP und Windows 7. Hier sind die Befehle, die ich verwendet habe:
hinzufügen:
netsh firewall add allowedprogram mode=ENABLE profile=ALL name=[exception name] program=[program path]
entfernen:
netsh firewall delete allowedprogram profile=ALL program=[program path]
hinzufügen:
netsh advfirewall firewall add rule action=allow profile=any protocol=any enable=yes direction=[in|out] name=[exception name] program=[program path]
entfernen:
advfirewall firewall delete rule profile=any name=[exception name]
Ich rate aus mehreren Gründen davon ab, dies zu einem Installationsproblem zu machen:
Es gibt mehrere Softwarefirewalls dort draußen; Sie können nicht codieren und testen für alle von ihnen.
Einige (z. B. die integrierten Fenster
Firewall) haben APIs, die nicht funktionieren
Ermöglicht Ihnen, den Port zu konfigurieren
Ausnahmen, wenn die FW deaktiviert ist.
Wenn der Benutzer später die FW aktiviert
sind wieder abgespritzt.
Es könnte externe Firewalls geben das bringt dich immer noch.
Stattdessen bevorzuge ich eine Dokumentation, damit Benutzer und Administratoren die Netzwerkanforderungen genau kennen. Ich musste einmal die Apple-Website googeln, um herauszufinden, welche Ports iTunes benötigt, und ich schwöre bei Gott, dass sie es wirklich schwer machten, sie zu finden, als sie versuchten, alles für die Konsumenten aufzuweichen.
Wenn Sie jedoch bei der Installation die größtmögliche Sorgfalt walten lassen möchten, verfügt WiX über eine benutzerdefinierte Aktionserweiterung für die Interaktion mit der Firewall, anstatt eigene benutzerdefinierte Aktionen zu erstellen. Selbst wenn Sie ein anderes Tool wie InstallShield verwenden, können Sie dieses Verhalten in ein WiX-Mergemodul einfügen und es dann mit Ihrem primären Werkzeug der Wahl verwenden.
Sie können es hier lesen:
und
In Ihrem Installer (zB als Administrator) müssen Sie Code schreiben, um auf die Windows-Firewall-APIs und fügen Sie Ihre App als Ausnahme hinzu