2009-05-21 6 views
64

Si je comprends bien, vous êtes censé utiliser la méthode Environment.GetFolderPath pour avoir le code indépendant du système d'exploitation ...Environment.GetFolderPath (... CommonApplicationData) renvoie toujours "C: Documents and Settings " sur Vista

Windows XP utilise C:\Documents and Settings\. Windows Vista utilise C:\ProgramData et C:\Users.

J'utilise le code ci-dessous sur un ordinateur Windows Vista et il retourne un répertoire C:\Documents and Settings\ au lieu de C:\ProgramData comme il se doit ... Des idées?

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

est que l'installation Vista mise à jour de XP? –

+0

Non, il avait définitivement Vista quand il a été ramené du magasin ... Je suppose qu'il est possible qu'il a été "amélioré" par bestbuy ou quelque chose (semble improbable). c: \ documents et les paramètres n'existe pas du tout si cela vous dit quelque chose. – blak3r

+0

Comment résolvez-vous "\\ mycompany \\ uid" dans le chemin? Je veux générer ce chemin exact (avec company & ui). Dois-je ajouter manuellement ces données à l'assemblage? –

Répondre

142

Mon programme d'installation a copié un fichier log.txt généré sur un ordinateur XP. Je regardais ce fichier journal pensant qu'il a été généré sur Vista. Une fois que j'ai corrigé ma configuration de log4net pour qu'elle soit "compatible avec Vista". Environment.GetFolderPath renvoyait les résultats attendus. Par conséquent, je ferme ce post.

La référence de chemin de SpecialFolder suivant pourrait être utile:

sortie sur 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` 

sortie sur 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

Pourquoi une configuration log4net aurait-elle un rapport avec Environment.GetFolderPath? En ce qui concerne «Toutes les idées?», Oui, vous obtenez le premier résultat en tant qu'utilisateur ordinaire et le deuxième résultat en tant qu'administrateur, par ex. lors de l'exécution d'un programme d'installation élevé ou d'un service. –

+1

En outre, je pense que les débutants lisant toutes ces listes doivent être conscients que ce ne sont pas nécessairement des chemins fixes sur un OS, mais peuvent être à peu près n'importe quoi sur "votre" machine. N'utilisez jamais GetFolderPath, ou vous serez désolé un jour. Oh, et utilisez Path.Combine plutôt que l'opérateur plus. –

+0

sur wondows10, 'Environment.SpecialFolder.CommonApplicationData' renvoie pour une raison quelconque' CommonApplicationData'. et donc crée les dossiers dans le chemin de l'application elle-même – mrid

25

sortie sur Ubuntu 9.10 -> Ubuntu 12.04 avec 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 

sortie sur Ubuntu 16.04 avec 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: 

où $ USER est l'utilisateur actuel

sortie sur Android 6 en utilisant 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: 

Où $ APPNAME est le nom de votre application Xamarin (par ex. MyApp.Droid)

sortie sur iOS Simulator 10.3 en utilisant 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: 

Où $ DEVICEGUID est le GUID simulateur (en fonction du simulateur choisi)

de sortie sur ipad 10.3 en utilisant Xamarin 7.2

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

sortie sur 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: 

Code Snippet si vous voulez vous connecter votre propre sortie sur Windows 7 (64 bits)

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

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 

sortie sur 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 
Questions connexes