2009-09-30 14 views
33

Piszę program, aby zabić i ponownie uruchomić Eksploratora, ale nie chcę twardego kodu lokalizacji, ponieważ niektórzy ludzie instalują okna w różnych miejscach (na przykład znalazłem kogoś, kto miał go zainstalowany w d: \ napęd, na którym był dysk C: \, ale nie zainstalowano na nim nic)Znajdź folder Windows programowo w C#

Próbowałem szukać w obszarze Environment.SpecialFolder. ale nie widzę opcji "Windows" pod tym

Jaki jest najlepszy sposób to zrobić?

+0

Czy rozważasz zmianę akceptowanej odpowiedzi na tę, którą napisałem, nie wymaga ona administratora i obsługuje niższe wersje platformy .net. –

Odpowiedz

9

po prostu zabić i uruchom Eksploratora Windows nie musiałby ścieżkę do folderu systemowego, jak to jest już uwzględniony w zmiennej środowiskowej PATH (chyba że użytkownik go zignorował).

To krótki program zabije wszystkie instancje explorer.exe, a następnie ponownie uruchom explorer.exe:

static void Main(string[] args) 
{ 
    foreach (Process process in Process.GetProcessesByName("explorer")) 
    { 
     if (!process.HasExited) 
     { 
      process.Kill(); 
     } 
    } 
    Process.Start("explorer.exe"); 
} 
+0

nie zakłada, że ​​ten program będzie w katalogu głównym z eksploratorem? – Crash893

+1

+1: Lepsza sugestia dotycząca implementacji – Ian

+1

@ Crash893: Nie, to nie jest potrzebne. Po prostu skopiuj kod i spróbuj :-) –

32

Environment.GetFolderPath(Environment.SpecialFolder.Windows) powróci na ścieżkę do folderu Windows. Polecaj to podejście dla zmiennej środowiskowej, ponieważ korzystasz z API, który robi dokładnie to, czego chcemy (.NET 4.0 i wyżej).

+1

Powinieneś zauważyć w swojej odpowiedzi, że Environment.SpecialFolder.Windows nie istnieje w wersjach .NET <4.0. Masz również literówkę w "SpecialFolder". –

10

gorąco zaleca się stosowanie:

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

nie wymaga uprawnień administratora i obsługuje wszystkie wersje .NET Framework.

+0

Idealny. To powinna być zaakceptowana odpowiedź, ponieważ nie wymaga ona administratora. – carefulnow1