2009-09-30 11 views
33

Ich schreibe ein Programm, um Explorer zu töten und neu zu starten, aber ich möchte den Ort nicht hart codieren, weil manche Leute Fenster an verschiedenen Orten installieren (zum Beispiel habe ich jemanden gefunden, der es installiert hatte) d: \ Laufwerk, wo das Laufwerk C: \ existiert, aber nichts darauf installiert wurde)Finde Windows - Ordner programmatisch in C#

Ich habe versucht, unter Environment.SpecialFolder zu suchen. aber ich sehe keine "Windows" -Option unter diesem

Was ist der beste Weg, dies zu tun?

+0

würden Sie in Betracht ziehen, die akzeptierte Antwort zu der von mir geschriebenen zu ändern, es erfordert keinen Admin und unterstützt niedrigere Versionen des .net-Frameworks. –

Antwort

9

einfach zu töten, und starten Sie Windows Explorer Sie würde den Weg in den Systemordner nicht benötigen, da dies bereits in der Umgebungsvariable PATH enthalten ist (es sei denn, die Benutzer damit verstimmt).

Das kurze Programm wird alle explorer.exe Instanzen töten und dann explorer.exe neu starten:

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

nicht davon ausgeht, dass dieses Programm im Stammverzeichnis mit Explorer sein wird? – Crash893

+1

+1: Für einen besseren Implementierungsvorschlag – Ian

+1

@ Crash893: Nein, das ist nicht erforderlich. Kopieren Sie einfach den Code und versuchen Sie es :-) –

32

Environment.GetFolderPath(Environment.SpecialFolder.Windows) wird den Pfad zum Windows-Ordner zurückzukehren. Empfehlen Sie diesen Ansatz über die Umgebungsvariable, da Sie eine API verwenden, die genau das tut, was wir wollen (.NET 4.0 und höher).

+1

Sie sollten in Ihrer Antwort darauf hinweisen, dass Environment.SpecialFolder.Windows nicht in .NET-Versionen <4.0 vorhanden ist. Sie haben auch einen Tippfehler in "SpecialFolder". –

10

Ich würde die Verwendung von sehr empfehlen:

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

sie nicht alle Versionen von .NET Framework Administratorrechte und unterstützt erfordert.

+0

Perfekt. Dies sollte die akzeptierte Antwort sein, da es keine Admin erfordert. – carefulnow1

Verwandte Themen