Quali sono le opzioni per l'aggiunta e la rimozione di criteri IPSec in Windows Server con C #?

StackOverflow https://stackoverflow.com/questions/703225

  •  22-08-2019
  •  | 
  •  

Domanda

Voglio essere in grado di aggiungere o rimuovere Criteri di protezione IP su Windows Server 2003 a livello di codice con C #.

Normalmente ci si manipolare queste politiche manaully attraverso il gpedit.msc snap-in (in Impostazioni di Windows -> Criteri locali -> Criteri di protezione IP su computer locale). Ma ho bisogno di essere in grado di aggiungere le politiche di filtri IP tramite il codice.

Tutte le idee su come fare questo?

È stato utile?

Soluzione

Ho avuto a che fare con questo problema per circa due settimane, e, purtroppo, avete due opzioni, a seconda della profondità di controllo è necessario:

1) Manipolazione diretta con WMI. Counter-intuitivamente, questo in realtà espone controllo MENO di opzione # 2 (che è quello che sto facendo io). Tutto questo è fatto attraverso la classe Win32_NetworkAdapterConfiguration. Ecco un link alla domanda ho chiesto di questo, con la mia risposta ad esso un po 'più tardi, dopo la ricerca è:

Metodi di alterare programatically regole IPSec con C #?

Ciò espone meno funzionalità, perché è possibile controllare solo tre cose attraverso IPsec per gli adattatori: porte TCP, UDP, IP protocolli. (Non è possibile affrontare con più politiche, diverse maschere di sottorete, ecc.)

2) il confezionamento netsh ipsec per fare tutto il lavoro sporco. Questa è la strada da percorrere, come PowerShell (che può essere richiamato tramite la classe PowerShell in System.Management.Automation) è attualmente priva di un cmdlet di fare cambiamenti IPSec.

C'è un cmdlet in PowerShell 2 di gestire le modifiche IPSec?

Wrapping ipsec netsh attraverso un gasdotto PowerShell chiamato attraverso System.Management.Automation.PowerShell è quello che ho finito per fare.

Utilizzare System.Diagnostics.Process per generare e controllare una conchiglia, oppure la classe PowerShell come menzionato sopra. O dovrebbe ottenere il lavoro fatto.

NOTE Se si passa al 2008 ad un certo punto, si noti che ipsec netsh è deprecato, e assicurarsi di utilizzare netsh advfirewall posto.

In bocca al lupo!

Altri suggerimenti

Si potrebbe utilizzare System.Diagnostics.Process ed eseguire "cmd.exe" con il comando IPSec come argomenti.

Un'altra risorsa si può provare è sito di Microsoft o Google .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top