Entwickler-Ecke
Basistechnologien - Windows Firewall Eintrag
epsodus - Di 05.07.16 08:25
Titel: Windows Firewall Eintrag
Hallo zusammen,
ich habe mnir ein kleines Batchfile geschrieben, welches auch funktioniert. Dieses wurde ich gerne in mein C# Programm einbauen und mit einem Button ausführen.
Das Batchfile sieht wie folgt aus ( Ip-Adressen sind hier nur als Beispiel gesetzt und nicht existent):
@echo off
cls
netsh advfirewall firewall add rule name="Test Domains Block" dir=out interface=any
action=block remoteip=165.461.226.11,169.445.226.12,190.367.127.161,182.356.124.169
pause
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| string parameters = @"netsh advfirewall firewall add rule " + "name={0} " + "dir={1} " + "action={2} " + "interface={3} " + "remoteip={4}"; string rulename = "Test Domains Block"; string direction = "out"; string action = "block"; string interface = "any"; int remoteip = 165.461.226.11,169.445.226.12,190.367.127.161,182.356.124.169; ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\netsh.exe"); info.Arguments = String.Format(parameters, rulename, direction, action, interface, remoteip); var process = Process.Start(info); |
Leider funktioniert meine obrige Annahme nicht. Kann mir hier jemand Hilfestellung geben ?
Christian S. - Di 05.07.16 09:18
Also ohne es ausprobiert zu haben, würde ich sagen, fehlen im C#-String "parameters" die Quotes beim name-Parameter und "netsh" gehört wiederum nicht dort rein.
epsodus - Mi 06.07.16 09:45
Christian S. hat folgendes geschrieben : |
Also ohne es ausprobiert zu haben, würde ich sagen, fehlen im C#-String "parameters" die Quotes beim name-Parameter und "netsh" gehört wiederum nicht dort rein. |
Hallo, Programm funktioniert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| string parameters = "advfirewall firewall add rule " + "name="{0}" + "dir={1} " + "action={2} " + "protocol={3} " + "localport={4}"; string rulename = "TCP rule"; string direction = "in"; // in,out string action = "block"; // allow,block,bypass string protocol = "TCP"; // TCP, UDP int localport = 2300; ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\System32\netsh.exe"); info.Arguments = String.Format(parameters, rulename, direction, action, protocol, localport); info.UseShellExecute = false; var process = Process.Start(info); |
Ich würde aber gerne statt protocol das Interface benutzen und statt localport eine IP-Adresse einsetzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!