.net - Hvad er mine muligheder for at tilføje og fjerne IPSec-politikker på Windows Server med C #?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne kunne tilføje eller fjerne IP Security Policies på Windows Server 2003 programmatisk med C #.


Normalt manipulerer du disse politikker manuelt via gpedit.msc snap-in (under Windows Indstillinger -> Lokale politikker -> IP Security Policies på lokal computer). Men jeg skal kunne tilføje IP filter politikker via kode.


Eventuelle ideer om hvordan man gør dette?

Bedste reference


Jeg har behandlet dette problem i omkring to uger, og desværre har du to muligheder afhængigt af den dybde, du har brug for:


1) Direkte manipulation med WMI. Mod intuitivt udsætter dette faktisk mindre kontrol end indstilling nr. 2 (hvilket er hvad jeg gør mig selv). Dette gøres gennem Win32\_NetworkAdapterConfiguration klassen. Her er et link til det spørgsmål, jeg spurgte om dette, med mit svar på det et stykke tid senere efter at have undersøgt det:


Metoder til programmæssigt at ændre ipsec regler med C #?


Dette afslører mindre funktionalitet, fordi du kun kan styre tre ting via IPsec til adaptere: TCP-porte, UDP-porte, IP-protokoller. (Du kan ikke håndtere flere politikker, forskellige undernetmasker osv.)


2) Indpakning netsh ipsec for at gøre alt dit beskidte arbejde. Dette er vejen at gå, som powershell (som kan påberåbes gennem PowerShell-klassen i System.Management.Automation) mangler i øjeblikket en cmdlet for at gøre IPSec-ændringer.


Er der en cmdlet i PowerShell 2 til at håndtere ipsec ændringer?


Indpakning netsh ipsec igennem en powershell pipeline kaldet gennem System.Management.Automation.PowerShell er, hvad jeg endte med at gøre.


Brug enten System.Diagnostics.Process til at gyde og kontrollere en shell, eller brug PowerShell-klassen som nævnt ovenfor. Enten skal få arbejdet gjort.


BEMÆRK
Hvis du skifter til 2008 på et tidspunkt, skal du bemærke, at netsh ipsec er udskrevet, og sørg for at bruge netsh advfirewall i stedet.


Held og lykke!

Andre referencer 1


Du kan bruge System.Diagnostics.Process og kør 'cmd.exe' med kommandoen ipsec som argumenterne.


En anden ressource, du kan prøve, er Microsofts websted eller Google. [3] [4]