Ответ 1
http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx
Попробуйте следующее:
Environment.GetEnvironmentVariable("SystemRoot")
Environment.GetEnvironmentVariable("windir")
Я пишу программу, чтобы убивать и перезапускать проводник, но я не хочу жестко кодировать местоположение, потому что некоторые люди устанавливают окна в разных местах (например, я нашел кого-то, кто установил его в диске d: \, где C:\drive существует, но на нем ничего не установлено)
Я пробовал искать в среде Environment.SpecialFolder. но я не вижу опции "окна" под этим
Каков наилучший способ сделать это?
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, вам не понадобится путь к системной папке, поскольку он уже включен в переменную среды 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");
}