Usando isto:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Eu recebo esta saída:
"C:\\Documents and Settings\\[USER]\\Application Data"
Como posso obter o diretório raiz de todos os usuários? ie:
"C:\\Documents and Settings\\[USER]\\"
Respostas:
Pode ser que esta seja uma boa solução: levando em consideração se este é Vista / Win7 ou XP e sem usar variáveis de ambiente:
Embora usar a variável de ambiente seja muito mais claro.
fonte
Experimentar:
Editar:
Se a versão do .NET que você está usando for 4 ou superior, você pode usar a
Environment.SpecialFolder
enumeração:fonte
Você pode obter o caminho UserProfile apenas com isto:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
fonte
Também é muito útil, ao investigar o
Environment.SpecialFolder
enum. Use o LINQPad ou crie uma solução e execute este código:Este é o resultado na minha máquina:
("fisch" são as primeiras 5 letras do meu sobrenome. Este é o nome de usuário atribuído ao fazer login com uma conta da Microsoft.)
fonte
Tentar navegar para cima a partir de uma SpecialFolder nomeada pode apresentar problemas. Há muitos motivos pelos quais as pastas não estarão onde você espera - os usuários podem movê-las por conta própria, o GPO pode movê-las, redirecionamento de pasta para caminhos UNC etc.
O uso da variável de ambiente para o perfil do usuário deve refletir qualquer um desses possíveis problemas.
fonte
Experimentar:
fonte
Mexer com variáveis de ambiente ou deslocamentos de pasta pai embutidos nunca é uma boa ideia quando há uma API para obter as informações que você deseja, chame
SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)
fonte
fonte
você pode usar o seguinte código:
mais informações, consulte: Obtenha o caminho do diretório atual em WinXP e WinCE com C #
fonte