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 :

Code pour lancer un EXE avec un autre compte


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 35
    Points
    35
    Par défaut Code pour lancer un EXE avec un autre compte
    Bonjour,

    Cela fait 12 ans que je n'ai pas fait de C (depuis l'université) et je peine à faire un morceau de code pour Windows XP/Seven afin de lancer un exécutable 32 bits avec un compte et un mode de passe qui seraient directement écris dans le code.
    J'aimerai que le code intègre l’exécution du programme que je veux lancer avec un compte administrateur, de manière à ce que les utilisateurs puissent l'exécuter eux mêmes sans avoir à saisir le compte et le mot de passe.
    Voici ce que j'ai fait mais ça ne permet que de l’exécuter avec le compte courant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include<stdlib.h>
    #include<stdio.h>
     
    int main( void ) {
     
      int result ;
      result=system(P:/myprog.exe);
      printf("%d",result);
      return 0;
    }
    Quelqu'un peut-il me compléter ou modifier ce morceau de code pour faire ce que je veux ?

    Merci de votre aide

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Une première remarque est que si tu souhaites récupérer le résultat de la ligne de commande, il n'est pas utile de regarder le retour de system(). Je te conseille de regarder du côté de popen(), comme on en a parlé dans cette discussion.

    La réponse se trouvera dans la manière d'appeler l'exécutable dans la ligne de commande si tu souhaites le lancer avec system() ou un équivalent. As-tu regarder des choses comme runas ?

    Bon dimanche.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 37
    Points : 35
    Points
    35
    Par défaut
    Bonsoir,

    En fait j'ai déjà envisagé le runas avec l'argument /savcred cependant j'ai plusieurs retour d'expérience dessus et parait-il que ça marche pas top.
    Ensuite je ne veux pas communiquer le mot de passe du compte aux utilisateurs.
    C'est pourquoi j'ai pensé à faire un truc en C avec login/password en inscrits dur dans le code, mais en ouvrant mon compilateur très poussiéreux j'ai été victime du syndrome de la page blanche.
    J'ai tout perdu du C et je n'ai pas vraiment le temps en ce moment de m'y remettre.
    Je cherche donc un morceau de code déjà près où je n'aurais qu'à saisir les informations propres à mon environnement (nom du programme, path, login, password, domaine).
    J'ai la naïveté de penser que d'autres ont déjà dû faire ça.

    Merci de votre aide

  4. #4
    Membre actif Avatar de moins1
    Homme Profil pro
    Autre
    Inscrit en
    Février 2013
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Autre
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2013
    Messages : 85
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par G-Orwell Voir le message
    Bonsoir,
    Ensuite je ne veux pas communiquer le mot de passe du compte aux utilisateurs.
    C'est pourquoi j'ai pensé à faire un truc en C avec login/password en inscrits dur dans le code
    Ben déjà un utilisateur un peu futé va pouvoir le trouver le mot de passe. En regardant dans un éditeur héxa genre. Qui plus est si le mot de passe change le programme ne fonctionnera plus correctement.


  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour lancer avec des coordonnées hard-codées, le plus simple est CreateProcessWithLogonW(). Attention toutefois, comme les autres l'ont dit c'est mauvais pour le mot de passe.

    Même si sous Windows un exécutable peut avoir les droits d'exécution sans les droits d'écriture, le processus appartiendra à l'utilisateur qui aura double-cliqué sur le programme, il pourra donc utiliser un debugger dessus pour y trouver le mot de passe. Il est très dur de faire un équivalent d'un programme SETUID sous Windows, et généralement ça nécessite le mot de passe quelque part.

    Il doit y avoir moyen de faire un service par contre, et laisser le client communiquer avec ce service par un tube nommé.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [Débutant] Comment lancer un exe avec un autre utilisateur que Système
    Par Amelie_sc dans le forum C#
    Réponses: 6
    Dernier message: 04/07/2013, 12h24
  2. Code pour lancer un autre code
    Par Nessie37 dans le forum VBA Access
    Réponses: 6
    Dernier message: 18/01/2008, 14h11
  3. [Vbscript]Code pour lancer un Exe
    Par said0011 dans le forum VBScript
    Réponses: 7
    Dernier message: 16/07/2007, 09h49
  4. [Flash MX2004] Lancer un *.exe avec fscommand
    Par pioup dans le forum Flash
    Réponses: 7
    Dernier message: 30/07/2004, 16h28
  5. [javac] code pour lancer la compilation des classes
    Par viena dans le forum Général Java
    Réponses: 6
    Dernier message: 19/07/2004, 17h41

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