88 votes

Environment.GetFolderPath(...CommonApplicationData) renvoie toujours " C:\Documents et paramètres" sur Vista

D'après ce que j'ai compris, vous êtes censé utiliser la fonction Environment.GetFolderPath afin d'avoir un code indépendant du système d'exploitation...

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

J'utilise le code ci-dessous sur un ordinateur Windows Vista et il renvoie un message de type C:\Documents and Settings\ au lieu de C:\ProgramData comme il le devrait... 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);
    }

167voto

blak3r Points 5096

Mon installateur a copié un fichier log.txt qui avait été généré sur un ordinateur XP. Je regardais ce fichier journal en pensant qu'il avait été généré sur Vista. Une fois que j'ai modifié la configuration de log4net pour qu'elle soit "Vista Compatible". Environment.GetFolderPath a retourné les résultats attendus. Par conséquent, je ferme ce post.

La référence suivante du chemin d'accès à SpecialFolder peut ê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

41voto

Tom Points 1299

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

où $USER est l'utilisateur actuel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X