IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Trouver le dossier APPDATA


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut Trouver le dossier APPDATA
    Bonjour/Bonsoir
    Voilà c'est dans le titre comment enregistrer un fichier dans le dossier APPDATA, je ne connais pas le nom du PC donc impossible de passé par le nom a moins de le récupéré.

    J'ai pas mal chercher et j'ai essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test = fopen("%APPDATA%\\TEST\\test.exe", "ab");
    Toutes les déclarations son faites juste pour idée et ceci n'a pas marcher voilà voilà merci à vous !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 799
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je ne connais pas le détaiil de la façon dont zindow gère ses paramètres mais je pense que getenv() devrait fonctionner

    Donc un truc dans ce genre...
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char path[MAXPATHLEN + 1];
    sprintf(path, "%s/test/test.exe", getenv("APPDATA"));
    test=fopen(path, "ab");
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Salut, tous d'abord merci de la rapidité de votre réponse.
    Ce soir j'essaye et je vous dis le résultat.

    Sinon j'ai pensé cette nuit a un moyen de trouver les dossiers que je vous communiquerai encore ce soir.

    Merci !

  4. #4
    Membre Expert Avatar de edgarjacobs
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2011
    Messages : 753
    Par défaut
    Hello,

    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
    #include <windows.h>
     
    int main(void) {
    	char appdata[MAX_PATH];
     
    	ExpandEnvironmentStrings("%APPDATA%",appdata,sizeof(appdata));
    	puts(appdata);
     
    	return(0);
     
    }

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Re, merci pour la nouvelle réponse je ne suis pas chez moi et ne peux pas tester (faite de fin d'année oblige) je vous fait part de mon idée pour le chemin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(int argc, char** argv){
        printf("%s", *argv); //Nous écrit le chemin absolue de notre fichier il suffit de le spliter pour avoir l'utilisateur le chemin est ensuite automatique
    //avec cette méthode on a même la lettre au cas ou ce n'est pas C: mais Z: ou encore autre chose après le chemin reste le même
    }
    Je teste tout ça en rentrant je pense dans 3-4 jours

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 799
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Itexe Voir le message
    Re, merci pour la nouvelle réponse je ne suis pas chez moi et ne peux pas tester (fêtes de fin d'année oblige) je vous fait part de mon idée pour le chemin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    int main(int argc, char** argv){
        printf("%s", *argv); //Nous écrit le chemin absolue de notre fichier il suffit de le spliter pour avoir l'utilisateur le chemin est ensuite automatique
    //avec cette méthode on a même la lettre au cas ou ce n'est pas C: mais Z: ou encore autre chose après le chemin reste le même
    }
    Ce code n'a absolument plus rien à voir avec le problème initial. Il se contente d'afficher argv[0] qui contient la string invoquée lors de son lancement. Plus aucun rapport avec APPDATA !!!
    Et en plus ton commentaire est faux car le chemin invoqué n'est pas forcément absolu. Si par exemple le programme se nomme "toto.exe" et qu'il se trouve dans le dossier au dessus de ton emplacement de travail tu peux alors l'invoquer de cette façon ..\toto.exe et c'est cette string exacte (qui n'a plus rien d'absolue) qui se retrouvera dans argv[0]...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Je travaille sur windows au cas ou,

    Pour commencer tu a le chemin absolue quand l'utilisateur double click.
    Ensuite si tu l'invoc par ligne de commande il faut que tu sois au minimum dans le répertoire de ta session ou si je m'exprime mal dans ton dossier user a toi.

    Je fais windows + R et tape cmd. Je lance directement mon executable depuis mon emplacement actuelle à savoir : C:\Users\[nom_user]


    Je propose donc de récupéré ce chemin peux importe ou tu te situe tu aura : [TA LETTRE DU DISQUE]:\Users\[nom_user]\..\..\..
    Sauf si tu te situe dans User ou TA LETTRE DU DISQUE.

    Pour la suite, je propose de faire un SPLIT avec comme caractère delimiteur '\'
    Dans notre tableau on a donc :
    tab[0] = [TA LETTRE DU DISQUE]:
    tab[1] = "Users"
    tab[2] = [nom_user]
    tab[3] = ..

    Pour trouver appdata -> le chemin est : [TA LETTRE DU DISQUE]:\Users\[nom_user]\AppData\

    Sois tab[0] + "\\" + tab[1] + "\\" + tab[2] + "\\AppData\\"
    Voilà j'ai accès au dossier appdata

    Ce que j'ai mis dessus ne marche pas directement en C il faut passez par des alternatives comme le split c'est pas aussi facile que faire split("a b c", " ")

    Donc la ou tu as raison c'est si la personne lance l’exécutable avant [nom_user] se qui rend impossible l'accès a AppData
    Il est tard il y a surement des explications confuse j'éditerai si jamais
    Bonne soirée :p

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 799
    Billets dans le blog
    1
    Par défaut
    Ok, j'ai compris ta façon de faire et les hypothèses sur lesquelles tu t'appuies. Mais sauf si mon getenv() ou si le ExpandEnvironmentStrings de edgarjacobs ne fonctionne pas, je trouve ta solution plutôt compliquée...
    Encore quand tu faiis "windows+R" puis cmd l'OS te place dans ton home donc effectivement le nom de l'exécutable invoqué reprendra ce chemin pour le poursuivre avec celui de l'exécutable mais si tu double cliques dessus t'es sûr que le chemin démarre aussi depuis le home de l'utilisateur ? (je peux pas tester je ne suis pas chez-moi et j'ai pas de zindow disponible...)
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 5
    Par défaut
    Re oui je pense que quand je double click il n'y as pas de problème avec ma méthode mais c'est claire que la tienne marche beaucoup plus vite étant absent 2-3J joyeux réveillon et bon noel

Discussions similaires

  1. Trouver les dossier spéciaux de windows
    Par Montor dans le forum Contribuez
    Réponses: 7
    Dernier message: 11/12/2009, 15h16
  2. où trouver le dossier créer par sharepoint
    Par samworkflow dans le forum SharePoint
    Réponses: 2
    Dernier message: 31/03/2009, 07h39
  3. Code pour trouver le dossier le plus récent
    Par trblolo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/01/2009, 12h07
  4. Trouver le dossier parent de l'application
    Par Mariquiqui dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 10/07/2008, 16h33
  5. [trouver le dossier du programme]
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 1
    Dernier message: 08/08/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo