Оказывается, вплоть до версии .NET 4 в перечислении Environment.SpecialFolder
нет пути к папке, куда установлена Windows (обычно C:\Windows
). Эту досадную оплошность можно обойти двумя способами:
1. Посмотреть в переменную окружения SystemRoot
или windir
:
string windir=Environment.GetEnvironmentVariable("SystemRoot");
string windir=Environment.GetEnvironmentVariable("windir");
2. ВНЕЗАПНО, бывают хитрые самосборные или специальные дистрибутивы, где данных переменных окружения нет. Тогда:
— надо взять путь к директории system
, (обычно это C:\Windows\System32
), который есть в Environment.SpecialFolder
во всех версиях .NET: Environment.SpecialFolder.System
— получить директорию выше уровнем:
string windir = System.IO.Directory.GetParent( Environment.GetFolderPath(Environment.SpecialFolder.System));