Подтвердить что ты не робот

Найти программную папку Windows в С#

Я пишу программу, чтобы убивать и перезапускать проводник, но я не хочу жестко кодировать местоположение, потому что некоторые люди устанавливают окна в разных местах (например, я нашел кого-то, кто установил его в диске d: \, где C:\drive существует, но на нем ничего не установлено)

Я пробовал искать в среде Environment.SpecialFolder. но я не вижу опции "окна" под этим

Каков наилучший способ сделать это?

4b9b3361

Ответ 2

Environment.GetFolderPath( Environment.SpecialFolder.Windows ) вернет путь к папке Windows. Рекомендовать этот подход по переменной среды, потому что с помощью API, который делает именно то, что мы хотим (.NET 4.0 и выше).

Ответ 3

Я настоятельно рекомендую использовать:

Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.System))

Он НЕ требует прав администратора и поддерживает все версии .NET framework.

Ответ 4

Чтобы просто убить и перезапустить проводник Windows, вам не понадобится путь к системной папке, поскольку он уже включен в переменную среды 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");
}