ruta obtener mis manipular ejemplo ejecutable documentos directorios directorio crear archivos archivo actual c# windows environment special-folders

c# - mis - ¿Cómo puedo obtener el directorio de usuario actual?



obtener ruta de un archivo c# (9)

No es una buena idea SHGetSpecialFolderPath(...,CSIDL_PROFILE,...) con variables de entorno o desplazamientos de carpeta padre codificados de forma rígida cuando hay una API para obtener la información que desea, llame a SHGetSpecialFolderPath(...,CSIDL_PROFILE,...)

Usando esto:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

Obtengo esta salida:

"C://Documents and Settings//[USER]//Application Data"

¿Cómo puedo obtener el directorio raíz de todos los usuarios? es decir:

"C://Documents and Settings//[USER]//"


Puede obtener la ruta de perfil de usuario con solo esto:

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);


Puede ser esta será una buena solución: teniendo en cuenta si se trata de Vista / Win7 o XP y sin usar variables de entorno:

string path = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; if ( Environment.OSVersion.Version.Major >= 6 ) { path = Directory.GetParent(path).ToString(); }

Aunque usar la variable de entorno es mucho más claro.


También es muy útil, mientras se investiga Environment.SpecialFolder . Special Maker enum. Use LINQPad o cree una solución y ejecute este código:

Enum.GetValues(typeof(Environment.SpecialFolder)) .Cast<Environment.SpecialFolder>() .Select(specialFolder => new { Name = specialFolder.ToString(), Path = Environment.GetFolderPath(specialFolder) }) .OrderBy(item => item.Path.ToLower())

Este es el resultado en mi máquina:

MyComputer LocalizedResources CommonOemLinks ProgramFiles C:/Program Files (x86) ProgramFilesX86 C:/Program Files (x86) CommonProgramFiles C:/Program Files (x86)/Common Files CommonProgramFilesX86 C:/Program Files (x86)/Common Files CommonApplicationData C:/ProgramData CommonStartMenu C:/ProgramData/Microsoft/Windows/Start Menu CommonPrograms C:/ProgramData/Microsoft/Windows/Start Menu/Programs CommonAdminTools C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Administrative Tools CommonStartup C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Startup CommonTemplates C:/ProgramData/Microsoft/Windows/Templates UserProfile C:/Users/fisch LocalApplicationData C:/Users/fisch/AppData/Local CDBurning C:/Users/fisch/AppData/Local/Microsoft/Windows/Burn/Burn History C:/Users/fisch/AppData/Local/Microsoft/Windows/History InternetCache C:/Users/fisch/AppData/Local/Microsoft/Windows/INetCache Cookies C:/Users/fisch/AppData/Local/Microsoft/Windows/INetCookies ApplicationData C:/Users/fisch/AppData/Roaming NetworkShortcuts C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Network Shortcuts PrinterShortcuts C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Printer Shortcuts Recent C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Recent SendTo C:/Users/fisch/AppData/Roaming/Microsoft/Windows/SendTo StartMenu C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Start Menu Programs C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Start Menu/Programs AdminTools C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Administrative Tools Startup C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup Templates C:/Users/fisch/AppData/Roaming/Microsoft/Windows/Templates Desktop C:/Users/fisch/Desktop DesktopDirectory C:/Users/fisch/Desktop Favorites C:/Users/fisch/Favorites MyMusic C:/Users/fisch/Music MyDocuments C:/Users/fisch/OneDrive/Documents MyDocuments C:/Users/fisch/OneDrive/Documents MyPictures C:/Users/fisch/OneDrive/Pictures MyVideos C:/Users/fisch/Videos CommonDesktopDirectory C:/Users/Public/Desktop CommonDocuments C:/Users/Public/Documents CommonMusic C:/Users/Public/Music CommonPictures C:/Users/Public/Pictures CommonVideos C:/Users/Public/Videos Windows C:/Windows Fonts C:/Windows/Fonts Resources C:/Windows/resources System C:/Windows/system32 SystemX86 C:/Windows/SysWoW64

Por cierto. "fisch" son las primeras 5 letras de mi apellido (y es alemán para "pez") . Este es el nombre de usuario asignado al iniciar sesión con una cuenta de Microsoft.


Tratar:

System.Environment.GetEnvironmentVariable("USERPROFILE");

Editar:

Si la versión de .NET que está utilizando tiene 4 o más, puede usar la enumeración Environment.SpecialFolder :

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);


Tratar:

System.IO.Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName/



$env:USERPROFILE = "C://Documents and Settings//[USER]//"


Environment.GetEnvironmentVariable("userprofile")

Intentar navegar desde una Carpeta Especial con nombre es propenso a problemas. Hay muchas razones por las que las carpetas no estarán donde usted espera: los usuarios pueden moverlas por su cuenta, GPO puede moverlas, redireccionar carpetas a rutas UNC, etc.

El uso de la variable de entorno para el perfil de usuario debe reflejar cualquiera de esos posibles problemas.