8
votes

Comment obtenir le dossier% Appdata% en C?

Comme ci-dessus, comment puis-je obtenir le dossier Appdata dans Windows à l'aide de C?

Je sais que pour C # vous utilisez environnement.specialfolder.aplicationData


0 commentaires

5 Réponses :


7
votes

Si je me rappelle correctement, il devrait simplement être xxx

éditer: juste à double coché, fonctionne bien!


3 commentaires

Utilisez plutôt l'API approprié, car les variables d'environnement sur Windows sont plus une courtoisie qu'un contrat. Ils pourraient ne pas être présents dans toutes les circonstances. Toutefois, shgedknowfolderpath vous donne le chemin à chaque fois.


Mais shgekkknessderderpath pourrait ne pas être disponible non plus. Biscuits difficiles.


@Hans: ShgetspecialfolderPath devrait être, cependant. En fonction des objectifs du système d'exploitation.



13
votes

Utilisez ShgetspecialfolderPath avec un CSIDL défini sur le dossier souhaité (probablement csidl_appdata ou csidl_local_appdata ).

Vous pouvez également utiliser le nouveau shgetFolderPath () < / a> et shgetnonferferrer"> shgeknowfolderpath () fonctions. Il y a aussi shgetknowfolderdlist () et si vous aimez Com Il y a icellingfolder :: gepath () .


2 commentaires

Notez que cette fonction a déjà été remplacée deux fois. Vous pourriez aussi bien donner les deux autres (y compris la fonction actuelle et recommandée).


@Joey - Je n'avais pas compris ça. Merci.




4
votes

Utilisation du % AppData% La variable d'environnement fonctionnera probablement la plupart du temps. Toutefois, si vous voulez faire cela la manière de Windows officielle, vous devez utiliser Utiliser le shgetfolderPath fonction , passant la valeur CSIDL csidl_appdata ou csidl_local_appdata , en fonction de vos besoins.

C'est ce que la méthode environnement.gefolderdpath () utilise dans .NET.

edit: Joey souligne correctement que cela a été remplacé par shgekknownfolderpath dans Windows Vista. News pour moi: -).


0 commentaires

0
votes

exemple code: xxx

csidl_appdata = nom d'utilisateur \ Données d'application. Dans la fenêtre 10 est: nom d'utilisateur \ appdata \ itinérance

CSIDL_FLAG_CREATE = Combinez avec CSIDL_ VALEUR Pour forcer la création de dossiers dans ShgetFolderPath ()

Vous pouvez également utiliser:

Csidl_local_appdata = nom d'utilisateur \ Paramètres locaux \ Données d'application (non itinérance)


0 commentaires