Каковы мои варианты добавления и удаления политик IPSec на Windows Server с помощью C #?
Вопрос
Я хочу иметь возможность добавлять или удалять политики безопасности IP на Windows Server 2003 программно с помощью C #.
Обычно вы управляете этими политиками вручную с помощью оснастки gpedit.msc (в разделе Настройки Windows -> Локальные политики -> Политики безопасности IP на локальном компьютере).Но мне нужно иметь возможность добавлять политики IP-фильтрации с помощью кода.
Есть какие-нибудь идеи о том, как это сделать?
Решение
Я занимаюсь этой проблемой около двух недель, и, к сожалению, у вас есть два варианта, в зависимости от необходимой вам глубины контроля:
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.Автоматизация.В итоге я сделал PowerShell.
Используйте либо System.Диагностика.Процесс для создания командной строки и управления ею, либо используйте класс PowerShell, как упоминалось выше.Любой из них должен выполнить свою работу.
ПРИМЕЧАНИЕ Если вы в какой-то момент переключитесь на 2008, обратите внимание, что netsh ipsec устарел, и обязательно используйте вместо него netsh advfirewall.
Удачи!
Другие советы
Вы могли бы использовать System.Диагностика.Обработайте и запустите "cmd.exe" с командой ipsec в качестве аргументов.
Еще один ресурс, который вы можете попробовать, это Веб-сайт Корпорации Майкрософт или Google.