[Langage C] dossier de l'utilisateur courant

Résolu/Fermé
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 3 janv. 2009 à 23:51
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 6 nov. 2014 à 19:26
Bonjour,
je suis en train de créer un petit programme en C qui demande des informations comptable a l'utilisateur et je les stock dans un fichier. Mais j'aimerais que ce fichier ce trouve dans
C:\Documents and Settings\nom_d_utilisateur_courant\Application Data
de façon a ce que les autres utilisateur ne puisse avoir accès a ce fichier.

Mais je ne connait pas le "nom d'utilisateur" a l'avance. Et je ne veux pas qu'au lancement du programme celui-ci demande a l'utilisateur son "nom d'utilisateur".

Comment puis-je faire pour le connaitre ou directement placer mon fichier dans ce dossier sans le connaitre ce "nom"?

9 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
5 janv. 2009 à 09:31
getcwd donne le répertoire courant, pas le repéertoire utilisateur.
dans une console, regarde avec "set" les différentes variables qui sont définies, tu en trouvera bien une qui te convient.
Moi, j'ai :
%USERPROFILE% qui donne le chemin complet du répertoire utilisateur, donc devrai convenir sous vista ou XP.
%APPDATA% pour le répertoire que tu cherche (rep_utilisateur_\nom_utilisateur\application_data)
pour l'os, tu as %OS% ou la commande "ver.exe" pour plus de détails.
2
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
5 janv. 2009 à 14:26
Ah oui désolée j'ai mal lu ^^
0
0x0syscall Messages postés 85 Date d'inscription lundi 28 avril 2008 Statut Membre Dernière intervention 30 juin 2009 5
4 janv. 2009 à 01:36
en console tu peux récupérer le nom de l'user avec
 echo %username%

tu peux essayer de te base sur ça dans ton programme en C, avec system(),
après c'est sur que sa fait pas très propre :s
0
Oui, ne jamais utiliser system()
Il faut utiliser l'api Win32 (SH)
demander sur le newsgroup professionnel des apis win32 :
news://fr.comp.os.ms-windows.programmation
où cela a souvent été donné (C et C++)
0
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
4 janv. 2009 à 18:03
Merci,
%username% est parfais pour le petit logiciel que je veux faire !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
4 janv. 2009 à 23:31
Voila autre problème... selon si l'utilisateur est sur xp ou vista le chemin de l'utilisateur est différant. Il me faudrait donc un moyen de connaitre le système d'exploitation utilisé sur la machine?

j'ai cherché une commande comme echo %username% mais je n'ai rien trouvé.
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
4 janv. 2009 à 23:57
Non non ce n'est pas la bonne méthode, il y a une fonction dans la libc qui est prévue pour :
http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/getcwd.3.html

L'avantage de la méthode est qu'elle est indépendante de l'OS (elle marchera aussi bien sous linux que sous windows).

Bonne chance
0
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
5 janv. 2009 à 00:24
Je ne vois pas en quoi cette fonction va me permettre de connaitre l'os de la machine de plus je n'ai rien compris a son fonctionnement.

Peut tu m'éclairer ?
0
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
5 janv. 2009 à 12:35
Merci ça fonctionne !
0
Est ce qu'on affecter le resultat a une variable
0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
6 nov. 2014 à 19:26
Bien sûr, getcwd retourne un pointeur sur la chaîne qui contient le chemin.
0