Trova le finestre delle cartelle a livello di codice in C #
-
19-09-2019 - |
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?
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");
}