web-dev-qa-db-fra.com

Rechercher un dossier Windows par programmation en c #

J'écris un programme pour tuer et redémarrer Explorer mais je ne veux pas coder en dur l'emplacement car certaines personnes installent des fenêtres à différents endroits (par exemple, j'ai trouvé quelqu'un qui l'avait installé dans le lecteur d:\où le C:\lecteur existait mais n'avait rien installé dessus)

J'ai essayé de regarder sous Environment.SpecialFolder. mais je ne vois pas d'option "windows" en dessous

Quelle est la meilleure façon de procéder?

38
Crash893

http://msdn.Microsoft.com/en-us/library/77zkk0b6.aspx

Essayez-les:

Environment.GetEnvironmentVariable("SystemRoot")

Environment.GetEnvironmentVariable("windir")
66
Omar

Environment.GetFolderPath( Environment.SpecialFolder.Windows ) renverra le chemin d'accès au dossier Windows. Recommander cette approche à la variable d'environnement, car utiliser une API qui fait exactement ce que nous voulons (.NET 4.0 et supérieur).

48
Uri

Je recommande fortement l'utilisation de:

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

Il ne nécessite PAS de droits d'administrateur et prend en charge toutes les versions du framework .NET.

16
Adam Lindsay

Pour simplement tuer et redémarrer l'Explorateur Windows, vous n'auriez pas besoin du chemin d'accès au dossier système car il est déjà inclus dans la variable d'environnement PATH (à moins que l'utilisateur ne s'en occupe).

Ce programme court va tuer toutes les instances Explorer.exe, puis redémarrer Explorer.exe:

static void Main(string[] args)
{
    foreach (Process process in Process.GetProcessesByName("Explorer"))
    {
        if (!process.HasExited)
        {
            process.Kill();
        }
    }
    Process.Start("Explorer.exe");
}
9
Dirk Vollmar