Какие есть варианты добавления и удаления политик IPSec на Windows Server с C #? - PullRequest
4 голосов
/ 01 апреля 2009

Я хочу иметь возможность добавлять или удалять Политики IP-безопасности в Windows Server 2003 программно с C #.

Обычно вы манипулируете этими политиками вручную через оснастку gpedit.msc (в разделе «Настройки Windows» -> «Локальные политики» -> «Политики IP-безопасности на локальном компьютере»). Но мне нужно иметь возможность добавлять политики IP-фильтров через код.

Есть идеи, как это сделать?

Ответы [ 2 ]

3 голосов
/ 12 ноября 2009

Я занимался этой проблемой около двух недель, и, к сожалению, у вас есть два варианта, в зависимости от необходимой вам глубины контроля:

1) Прямые манипуляции с WMI. Неудобно, что на самом деле это дает МЕНЬШЕ контроля, чем вариант № 2 (что я и делаю сам). Все это делается с помощью класса Win32_NetworkAdapterConfiguration. Вот ссылка на вопрос, который я задал по этому поводу, и мой ответ на него спустя некоторое время после исследования:

Методы программного изменения правил ipsec с помощью C #?

Это предоставляет меньше функциональности, потому что через IPsec для адаптеров можно управлять только тремя вещами: TCP-порты, UDP-порты, IP-протоколы. (Вы не можете работать с несколькими политиками, разными масками подсетей и т. Д.)

2) Обернуть netsh ipsec, чтобы сделать всю вашу грязную работу. Это правильный путь, поскольку в PowerShell (который можно вызывать с помощью класса PowerShell в System.Management.Automation) в настоящее время отсутствует командлет для внесения изменений IPSec.

Есть ли в PowerShell 2 командлет для обработки изменений ipsec?

Обертывание netsh ipsec через конвейер powershell, вызываемый через System.Management.Automation.PowerShell - это то, что я в итоге сделал.

Используйте либо System.Diagnostics.Process для порождения и управления оболочкой, либо используйте класс PowerShell, как упомянуто выше. Либо должен получить работу.

Примечание Если в какой-то момент вы переключитесь на 2008, обратите внимание, что netsh ipsec устарел, и убедитесь, что вместо него используется netsh advfirewall.

Удачи!

0 голосов
/ 01 апреля 2009

Вы можете использовать System.Diagnostics.Process и запустить «cmd.exe» с командой ipsec в качестве аргументов.

Еще один ресурс, который вы можете попробовать - Сайт Microsoft или Google .

...