2009-05-21 12 views
64

lo que tengo entendido, se supone que debes usar el método Environment.GetFolderPath por lo que tiene sistema operativo de código independiente ...Environment.GetFolderPath (... CommonApplicationData) todavía está regresando "C: Documents and Settings " en Vista

Windows XP usa C:\Documents and Settings\. Windows Vista usa C:\ProgramData y C:\Users.

Estoy usando el siguiente código en una computadora con Windows Vista y está devolviendo un directorio C:\Documents and Settings\ en lugar de C:\ProgramData como debería ... ¿Alguna idea?

string commonAppData = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData); 
    try 
    { 
     File.CreateText(
      Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + 
      "\\mycompany\\uid"); 
     log.Debug("Created file successfully"); 
    } 
    catch (Exception ex) 
    { 
     log.Error("Unable to create the uid file: ", ex); 
    } 
+2

es que la instalación de Vista actualizado de XP? –

+0

No, Definitivamente tenía Vista cuando fue llevado a casa desde la tienda ... Supongo que es posible que haya sido "actualizado" por bestbuy o algo así (parece poco probable). c: \ documents and settings no existe en absoluto si eso te dice algo. – blak3r

+0

¿Cómo se resuelve "\\ mycompany \\ uid" en la ruta? Quiero generar esta ruta exacta (con la empresa & ui). ¿Debo agregar manualmente estos datos desde el ensamblado? –

Respuesta

142

Mi instalador copió un archivo log.txt que se había generado en una computadora con XP. Estaba mirando ese archivo de registro pensando que se generó en Vista. Una vez que arreglé mi configuración de log4net para ser "Compatible con Vista". Environment.GetFolderPath estaba devolviendo los resultados esperados. Por lo tanto, estoy cerrando esta publicación.

La siguiente referencia de la trayectoria SpecialFolder podría ser útil:

Salida En Windows Server 2003:

 
SpecialFolder.ApplicationData: C:\Documents and Settings\blake\Application Data 
SpecialFolder.CommonApplicationData: C:\Documents and Settings\All Users\Application Data 
SpecialFolder.ProgramFiles: C:\Program Files 
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files 
SpecialFolder.DesktopDirectory: C:\Documents and Settings\blake\Desktop 
SpecialFolder.LocalApplicationData: C:\Documents and Settings\blake\Local Settings\Application Data 
SpecialFolder.MyDocuments: C:\Documents and Settings\blake\My Documents 
SpecialFolder.System: C:\WINDOWS\system32` 

salida en Vista:

 
SpecialFolder.ApplicationData: C:\Users\blake\AppData\Roaming 
SpecialFolder.CommonApplicationData: C:\ProgramData 
SpecialFolder.ProgramFiles: C:\Program Files 
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files 
SpecialFolder.DesktopDirectory: C:\Users\blake\Desktop 
SpecialFolder.LocalApplicationData: C:\Users\blake\AppData\Local 
SpecialFolder.MyDocuments: C:\Users\blake\Documents 
SpecialFolder.System: C:\Windows\system32 
+0

¿Por qué una configuración de log4net tiene algo que ver con Environment.GetFolderPath? En cuanto a "¿Alguna idea?", Sí, obtiene el primer resultado como usuario ordinario, y el segundo resultado se ejecuta como Administrador, p. cuando se ejecuta un instalador elevado o un servicio. –

+1

Además, creo que los novatos que lean todos estos listados deben ser conscientes de que estos no son necesariamente caminos fijos en un SO, pero pueden ser prácticamente cualquier cosa en "su" máquina. Nunca uses hardcode, en cambio usa GetFolderPath, o lo lamentarás algún día. Ah, y use Path.Combine en lugar del operador más. –

+0

en wondows10, 'Environment.SpecialFolder.CommonApplicationData' por alguna razón devuelve' CommonApplicationData'. y por lo tanto está creando las carpetas en la propia ruta de la aplicación – mrid

25

salida en Ubuntu 9.10 -> Ubuntu 12.04 con mono 2.10.8.1:

SpecialFolder.ApplicationData: /home/$USER/.config 
SpecialFolder.CommonApplicationData: /usr/share 
SpecialFolder.ProgramFiles: 
SpecialFolder.DesktopDirectory: /home/$USER/Desktop 
SpecialFolder.LocalApplicationData: /home/$USER/.local/share 
SpecialFolder.MyDocuments: /home/$USER 
SpecialFolder.System: 

SpecialFolder.Personal: /home/$USER 

salida en Ubuntu 16.04 con mono 4.2.1

SpecialFolder.ApplicationData: /home/$USER/.config 
SpecialFolder.CommonApplicationData: /usr/share 
SpecialFolder.ProgramFiles: 
SpecialFolder.DesktopDirectory: /home/$USER/Desktop 
SpecialFolder.LocalApplicationData: /home/$USER/.local/share 
SpecialFolder.MyDocuments: /home/$USER 
SpecialFolder.Desktop: /home/$USER/Desktop 
SpecialFolder.Personal: /home/$USER 

SpecialFolder.System: 
SpecialFolder.Programs: 
SpecialFolder.Favorites: 
SpecialFolder.Startup: 
SpecialFolder.Recent: 
SpecialFolder.SendTo: 
SpecialFolder.StartMenu: 
SpecialFolder.MyMusic: /home/$USER/Music 
SpecialFolder.MyVideos: /home/$USER/Videos 
SpecialFolder.MyComputer: 
SpecialFolder.NetworkShortcuts: 
SpecialFolder.Fonts: /home/$USER/.fonts 
SpecialFolder.Templates: /home/$USER/Templates 
SpecialFolder.CommonStartMenu: 
SpecialFolder.CommonPrograms: 
SpecialFolder.CommonStartup: 
SpecialFolder.CommonDesktopDirectory: 
SpecialFolder.PrinterShortcuts: 
SpecialFolder.InternetCache: 
SpecialFolder.Cookies: 
SpecialFolder.History: 
SpecialFolder.Windows: 
SpecialFolder.MyPictures: /home/$USER/Pictures 
SpecialFolder.UserProfile: /home/$USER 
SpecialFolder.SystemX86: 
SpecialFolder.ProgramFilesX86: 
SpecialFolder.CommonProgramFiles: 
SpecialFolder.CommonProgramFilesX86: 
SpecialFolder.CommonTemplates: /usr/share/templates 
SpecialFolder.CommonDocuments: 
SpecialFolder.CommonAdminTools: 
SpecialFolder.AdminTools: 
SpecialFolder.CommonMusic: 
SpecialFolder.CommonPictures: 
SpecialFolder.CommonVideos: 
SpecialFolder.Resources: 
SpecialFolder.LocalizedResources: 
SpecialFolder.CommonOemLinks: 
SpecialFolder.CDBurning: 

donde $ USUARIO es el usuario actual

salida en Android 6 usando Xamarin 7,2

Environment.SpecialFolder.ApplicationData: /data/user/0/$APPNAME/files/.config 
Environment.SpecialFolder.CommonApplicationData: /usr/share 
Environment.SpecialFolder.ProgramFiles: 
Environment.SpecialFolder.DesktopDirectory: /data/user/0/$APPNAME/files/Desktop 
Environment.SpecialFolder.LocalApplicationData: /data/user/0/$APPNAME/files/.local/share 
Environment.SpecialFolder.MyDocuments: /data/user/0/$APPNAME/files 
Environment.SpecialFolder.Desktop: /data/user/0/$APPNAME/files/Desktop 
Environment.SpecialFolder.Personal: /data/user/0$APPNAME/files 

Environment.SpecialFolder.Startup: 
Environment.SpecialFolder.Recent: 
Environment.SpecialFolder.SendTo: 
Environment.SpecialFolder.StartMenu: 
Environment.SpecialFolder.MyMusic: /data/user/0/$APPNAME/files/Music 
Environment.SpecialFolder.MyVideos: /data/user/0/$APPNAME/files/Videos 
Environment.SpecialFolder.MyComputer: 
Environment.SpecialFolder.NetworkShortcuts: 
Environment.SpecialFolder.Fonts: /data/user/0/$APPNAME/files/.fonts 
Environment.SpecialFolder.Templates: /data/user/0/$APPNAME/files/Templates 
Environment.SpecialFolder.CommonStartMenu: 
Environment.SpecialFolder.CommonPrograms: 
Environment.SpecialFolder.CommonStartup: 
Environment.SpecialFolder.CommonDesktopDirectory: 
Environment.SpecialFolder.PrinterShortcuts: 
Environment.SpecialFolder.InternetCache: 
Environment.SpecialFolder.Cookies: 
Environment.SpecialFolder.History: 
Environment.SpecialFolder.Windows: 
Environment.SpecialFolder.MyPictures: /data/user/0/$APPNAME/files/Pictures 
Environment.SpecialFolder.UserProfile: /data/user/0/$APPNAME/files 
Environment.SpecialFolder.SystemX86: 
Environment.SpecialFolder.ProgramFilesX86: 
Environment.SpecialFolder.CommonProgramFiles: 
Environment.SpecialFolder.CommonProgramFilesX86: 
Environment.SpecialFolder.CommonTemplates: /usr/share/templates 
Environment.SpecialFolder.CommonDocuments: 
Environment.SpecialFolder.CommonAdminTools: 
Environment.SpecialFolder.AdminTools: 
Environment.SpecialFolder.CommonMusic: 
Environment.SpecialFolder.CommonPictures: 
Environment.SpecialFolder.CommonVideos: 
Environment.SpecialFolder.Resources: 
Environment.SpecialFolder.LocalizedResources: 
Environment.SpecialFolder.CommonOemLinks: 
Environment.SpecialFolder.CDBurning: 

Donde $ APPNAME es el nombre de su aplicación Xamarin (ej. MyApp.Droid)

de salida en simulador de iOS 10,3 usando Xamarin 7,2

ApplicationData: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/.config 
CommonApplicationData: /usr/share 
ProgramFiles: /Applications 
DesktopDirectory: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Desktop 
LocalApplicationData: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents 
MyDocuments: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents 
Desktop: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Desktop 
MyDocuments: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents 
Startup: 
Recent: 
SendTo: 
StartMenu: 
MyMusic: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Music 
MyVideos: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Videos 
MyComputer: 
NetworkShortcuts: 
Fonts: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/.fonts 
Templates: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Templates 
CommonStartMenu: 
CommonPrograms: 
CommonStartup: 
CommonDesktopDirectory: 
PrinterShortcuts: 
InternetCache: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Library/Caches 
Cookies: 
History: 
Windows: 
MyPictures: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Documents/Pictures 
UserProfile: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID 
SystemX86: 
ProgramFilesX86: 
CommonProgramFiles: 
CommonProgramFilesX86: 
CommonTemplates: /usr/share/templates 
CommonDocuments: 
CommonAdminTools: 
AdminTools: 
CommonMusic: 
CommonPictures: 
CommonVideos: 
Resources: /Users/$USER/Library/Developer/CoreSimulator/Devices/$DEVICEGUID/data/Containers/Data/Application/$APPLICATIONGUID/Library 
LocalizedResources: 
CommonOemLinks: 
CDBurning: 

donde $ DEVICEGUID es el GUID simulador (dependiendo del simulador seleccionado)

salida en IPAD 10,3 usando Xamarin 7.2

SpecialFolder.MyDocuments: /var/mobile/Containers/Data/Application/$APPLICATIONGUID/Documents 
12

de salida en Windows 10

Fonts: C:\Windows\Fonts 
CommonStartMenu: C:\ProgramData\Microsoft\Windows\Start Menu 
CommonPrograms: C:\ProgramData\Microsoft\Windows\Start Menu\Programs 
CommonStartup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 
CommonDesktopDirectory: C:\Users\Public\Desktop 
CommonApplicationData: C:\ProgramData 
Windows: C:\Windows 
System: C:\Windows\system32 
ProgramFiles: C:\Program Files (x86) 
SystemX86: C:\Windows\SysWOW64 
ProgramFilesX86: C:\Program Files (x86) 
CommonProgramFiles: C:\Program Files (x86)\Common Files 
CommonProgramFilesX86: C:\Program Files (x86)\Common Files 
CommonTemplates: C:\ProgramData\Microsoft\Windows\Templates 
CommonDocuments: C:\Users\Public\Documents 
CommonAdminTools: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools 
CommonMusic: C:\Users\Public\Music 
CommonPictures: C:\Users\Public\Pictures 
CommonVideos: C:\Users\Public\Videos 
Resources: C:\Windows\resources 
LocalizedResources: 
CommonOemLinks: 

Fragmento de código si desea registrar su propio

foreach(Environment.SpecialFolder f in Enum.GetValues(typeof(Environment.SpecialFolder))) 
{ 
    string commonAppData = Environment.GetFolderPath(f); 
    Console.WriteLine("{0}: {1}", f, commonAppData); 
} 
Console.ReadLine(); 
5

de salida en Windows 7 (64 bits)

SpecialFolder.CommonApplicationData: C:\ProgramData 
SpecialFolder.CommonDesktopDirectory: C:\Users\Public\Desktop 
SpecialFolder.CommonStartMenu: C:\ProgramData\Microsoft\Windows\Start Menu 
SpecialFolder.CommonPrograms: C:\ProgramData\Microsoft\Windows\Start Menu\Programs 
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files 
SpecialFolder.CommonProgramFilesX86: C:\Program Files (x86)\Common Files 
SpecialFolder.CommonStartup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup 
SpecialFolder.ProgramFiles: C:\Program Files 
SpecialFolder.ProgramFilesX86: C:\Program Files (x86) 
SpecialFolder.System: C:\Windows\system32 
SpecialFolder.SystemX86: C:\Windows\SysWOW64 

de salida en Windows XP

SpecialFolder.CommonApplicationData: C:\Documents and Settings\All Users\Application Data 
SpecialFolder.CommonDesktopDirectory: C:\Documents and Settings\All Users\Desktop 
SpecialFolder.CommonPrograms: C:\Documents and Settings\All Users\Start Menu\Programs 
SpecialFolder.CommonProgramFiles: C:\Program Files\Common Files 
SpecialFolder.CommonProgramFilesX86: 
SpecialFolder.CommonStartMenu: C:\Documents and Settings\All Users\Start Menu 
SpecialFolder.CommonStartup: C:\Documents and Settings\All Users\Start Menu\Programs\Startup 
SpecialFolder.ProgramFiles: C:\Program Files 
SpecialFolder.ProgramFilesX86: 
SpecialFolder.System: C:\WINDOWS\system32 
SpecialFolder.SystemX86: C:\WINDOWS\system32