Вместо того, чтобы пытаться поддерживать все команды DOS, просто внедрите небольшое подмножество, которое гарантирует, что ничего не может пойти не так. Как Не разрешать УДАЛИТЬ, RD, ФОРМАТ и т.д.
Итак, в основном у вас будет только подмножество команд DOS. Как только у вас есть набор команд, вы можете кодировать эти конкретные команды, используя механизмы расширения или как подключаемые модули.
Это также поможет вам надежно защитить вашу машину от злонамеренных атак, и в худшем случае это может быть отправка данных, но с машины данные / система никогда не пострадают.
ОБНОВЛЕНИЕ: выполнение конкретных команд остается за вами. Вы можете использовать .NET API или иметь System.Diagnostics.Process