Найти папку Windows программно в C#
-
19-09-2019 - |
Вопрос
Я пишу программу для убийства и перезапуска Explorer, но я не хочу жесткого кодирования местоположения, потому что некоторые люди устанавливают Windows в разных местах (например, я нашел кого -то, кто установил его на D: Drive, где C: Драйв действительно существовал, но на нем ничего не было)
Я пытался искать в окружающей среде. Но я не вижу опции «Windows» под этим
Как лучше всего это сделать?
Решение
http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx
Попробуйте это:
Environment.GetEnvironmentVariable("SystemRoot")
Environment.GetEnvironmentVariable("windir")
Другие советы
Environment.GetFolderPath( Environment.SpecialFolder.Windows )
Вернут путь к папке Windows. Рекомендуйте этот подход к переменной среды, потому что использование API, который делает именно то, что мы хотим (.net 4.0 и выше).
Я очень рекомендую использовать:
Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))
Это не требует права администратора и поддерживает все версии .NET Framework.
Чтобы просто убить и перезапустить Windows Explorer, вам не понадобится путь к системной папке, так как это уже включено в переменную среды Path (если только пользователь не испортился с ней).
Эта короткая программа убьет все экземпляры Explorer.exe, а затем перезапустите Explorer.exe:
static void Main(string[] args)
{
foreach (Process process in Process.GetProcessesByName("explorer"))
{
if (!process.HasExited)
{
process.Kill();
}
}
Process.Start("explorer.exe");
}