Domanda

Sto scrivendo un programma per uccidere e riavviare Explorer, ma io non voglio codificare la posizione perché alcune persone installare Windows in luoghi diversi (per esempio ho trovato qualcuno che lo aveva installato in D: \ unità in cui il C: \ unità esisteva, ma non aveva nulla installato su di esso)

Ho provato a guardare sotto Environment.SpecialFolder. ma non vedo l'opzione "finestre" sotto che

Qual è il modo migliore per fare questo?

È stato utile?

Soluzione

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

Prova questi:

Environment.GetEnvironmentVariable("SystemRoot")

Environment.GetEnvironmentVariable("windir")

Altri suggerimenti

Environment.GetFolderPath( Environment.SpecialFolder.Windows ) restituirà il percorso della cartella di Windows. Consiglia questo approccio rispetto al variabile d'ambiente, perché l'utilizzo di un'API che fa esattamente quello che vogliamo (.NET 4.0 e versioni successive).

Mi raccomando l'uso di:

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

Non richiede diritti di amministratore e supporta tutte le versioni di .NET framework.

Per uccidere in modo semplice e riavviare Windows Explorer non avrebbe bisogno il percorso della cartella di sistema in quanto questo è già incluso nella variabile d'ambiente PATH (a meno che l'utente pasticciato con esso).

Questo breve programma ucciderà tutte le istanze explorer.exe e quindi riavviare explorer.exe:

static void Main(string[] args)
{
    foreach (Process process in Process.GetProcessesByName("explorer"))
    {
        if (!process.HasExited)
        {
            process.Kill();
        }
    }
    Process.Start("explorer.exe");
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top