Pergunta

Estou escrevendo um programa para matar e reiniciar o Explorer, mas não quero codificar o local, porque algumas pessoas instalam janelas em lugares diferentes (por exemplo, encontrei alguém que o instalou no d: drive onde C: Drive existia, mas não tinha nada instalado)

Eu tentei procurar no ambiente.SpecialFolder. Mas não vejo uma opção "Windows" sob isso

Qual é a melhor maneira de fazer isso?

Foi útil?

Solução

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

Tente esse:

Environment.GetEnvironmentVariable("SystemRoot")

Environment.GetEnvironmentVariable("windir")

Outras dicas

Environment.GetFolderPath( Environment.SpecialFolder.Windows ) retornará o caminho para a pasta do Windows. Recomende essa abordagem sobre a variável de ambiente, porque o uso de uma API que faz exatamente o que queremos (.NET 4.0 e acima).

Eu recomendo o uso de:

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

Não requer direitos de administrador e suporta todas as versões da estrutura .NET.

Para simplesmente matar e reiniciar o Windows Explorer, você não precisaria do caminho para a pasta do sistema, pois isso já está incluído na variável do ambiente do caminho (a menos que o usuário mexeu com ele).

Esse programa curto matará todas as instâncias do Explorer.exe e, em seguida, reiniciará o explorer.exe:

static void Main(string[] args)
{
    foreach (Process process in Process.GetProcessesByName("explorer"))
    {
        if (!process.HasExited)
        {
            process.Kill();
        }
    }
    Process.Start("explorer.exe");
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top