Вопрос

Я пишу программу для убийства и перезапуска 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");
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top