J'ai eu affaire à cette question pendant environ deux semaines, et, malheureusement, vous avez deux options, en fonction de la profondeur de contrôle dont vous avez besoin:
1) La manipulation directe avec WMI. Contre-intuitivement, cela expose réellement le contrôle LESS que l'option # 2 (ce que je fais moi-même). Tout cela est effectué via la classe Win32_NetworkAdapterConfiguration. Voici un lien vers la question que je posais à ce sujet, avec ma réponse à ce moment plus tard, après des recherches il:
Methods of programatically altering ipsec rules with C#?
Cette situation expose moins de fonctionnalités, car vous ne pouvez contrôler trois choses par IPsec pour les cartes: les ports TCP , Ports UDP, protocoles IP. (Vous ne pouvez pas gérer plusieurs politiques, différents masques de sous-réseau, etc.)
2) Envelopper netsh ipsec pour faire tout votre sale boulot. C'est la voie à suivre, car powershell (qui peut être invoqué via la classe PowerShell dans System.Management.Automation) manque actuellement d'une cmdlet pour effectuer les modifications IPSec.
Is there a cmdlet in PowerShell 2 to handle ipsec changes?
Emballage netsh ipsec par un pipeline de Powershell appelé par System.Management.Automation.PowerShell est ce que je fini par faire.
Utilisez System.Diagnostics.Process pour générer et contrôler un shell ou utilisez la classe PowerShell comme indiqué ci-dessus. L'un ou l'autre devrait faire le travail.
NOTE Si vous passez à 2008 à un moment donné, notez que netsh ipsec est dépréciée, et assurez-vous d'utiliser à la place netsh advfirewall.
Bonne chance!
Je l'ai déjà googlé, et recherché StackOverflow.com, et si vous lisez la page MS vous liez, vous verriez que le IPSecpol.exe (qui semble être un candidat probable pour le bon outil) * n'est pas inclus dans Windows Server 2003 * inclus – ZeroBugBounce