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

Web & réseau Delphi Discussion :

[D7] Comment lancer un exécutable à distance ?


Sujet :

Web & réseau Delphi

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut [D7] Comment lancer un exécutable à distance ?
    Salut,

    Je souhaiterai lancer une application sous forme d'exécutable à partir d'une autre application. C'est à dire quand je vient cliquer sur mon appli je souhaite qu'il y en ait deux qui se lance.

    Est ce possible?

    Et si oui est il possible de le faire sur deux postes distants placé sur un même réseau?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Pour ce qui est de lancer une application sur le même poste, c'est tout à fait possible via un ShellExecute ou via un CreateProcess.

    Pour ce qui est de lancer une application sur une autre machine, à mon sens ce n'est possible que si tu as un "serveur" sur l'autre machine qui va exécuter ta requête. Ce "serveur" peut être un objet COM piloté via sockets, peut être un objet DCOM, peut être un serveur TCP, ...

    A+

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut
    Un serveur TCP, c'est ce que j'utilise.
    Mais pour lui envoyer une requête, il faut que celui-ci soit connecté or je souhaite lancer ce serveur à distance donc lui ne pourra déjà pas voir une quelconque requête

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Je ne vois alors qu'une seule solution, c'est de passer par DCOM. Dans ce cas il faut faire attention à bien avoir tous les droits nécessaires sur la machine distante.

    PS :

    Pourquoi ne pas mettre ton serveur TCP sous forme de service (quitte à avoir un second service type "guardian"). Il demarrerait avec la machine, et s'il se contente de faire son rôle de serveur il ne prendra quasi pas de CPU. Cette solution a "l'avantage de ne pas avoir les inconvénients de DCOM ... (je veux dire droits d'accès, installation, ...)"

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 100
    Points : 53
    Points
    53
    Par défaut
    DCOM c'est à oublié car je n'ai pas suffisamment de droits d'accès au réseau...

    Donc pour le passer en service comme tu dis, comment je dois faire exactement ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Tu dois simplement créer une nouvelle application de type NT Service. Pour ce faire, je te conseille ce petit tutorial fait par Bob Swart (DrBob) à l'adresse http://builder.com.com/5100-6387-1050538.html?tag=sc

    C'est en anglais mais très bien expliqué.

    Quand ton service sera créé, il suffira de mettre ton serveur TCP en écoute dès le démarrage du service. Il pourra donc réagir à tout moment pendant la session de l'utilisateur.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 123
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par raoulmania
    Donc pour le passer en service comme tu dis, comment je dois faire exactement ?
    En plus de ce qui dit Pero, l'idée, c'est que ton programme écoute une requête sur un port TCP avant de lancer l'application lorsqu'il reçoit cette requête. Ainsi, pas besoin de t'embêter avec DCOM, les droits d'accès etc.

    Par contre...
    1. encore faut-il que les machines aient TCP installé
    2. trouver un moyen de localiser la machine distante : au choix un broadcast, ou alors tu affiches la liste des machines allumées via le voisinage réseau, et l'utilisateur clique sur la bécane dans la liste.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par fredtheman
    Par contre...
    1. encore faut-il que les machines aient TCP installé
    2. trouver un moyen de localiser la machine distante : au choix un broadcast, ou alors tu affiches la liste des machines allumées via le voisinage réseau, et l'utilisateur clique sur la bécane dans la liste.
    Tu connais beaucoup de machines actuelles où TCP n'est pas installé d'office ??? Raoulmania a précisé qu'il avait un serveur TCP, donc ...

    Dans sa question de base, raoulmania précisait qu'il voulait le faire sur 2 postes distants. J'imagine donc qu'il connait leur adresse IP ...

    De plus, le voisinage réseau n'est pas fiable du tout. Son temps de refresh peut être très long, et il suffit que deux machines ne soient pas dans le même segment pour qu'elles ne se voient pas. Donc, à proscrire.

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Une autre approche http://www.sysinternals.com/Utilities/PsExec.html

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 51
    Points : 47
    Points
    47
    Par défaut
    PSExec ... très bien ... très pratique mais attention, il faut les bons droits pour que cela marche (exécution ou autre).

    Ceci dit, il est vrai que cela vaut la peine de faire un tour sur ce site incontournable.

  11. #11
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Pero
    mais attention, il faut les bons droits pour que cela marche.
    Oui effectivement je n'ai pas précisé. Sous NT à partir du moment où on effectue des traitements dans un autre contexte (session, machine) la notion de droits pointe le bout de son nez.

    J'ai proposé cette solution étant donné que les autres propositions nécessiterons aussi des droits particulier me semble-t-il.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/12/2014, 10h41
  2. Réponses: 15
    Dernier message: 09/07/2013, 14h29
  3. Réponses: 1
    Dernier message: 03/05/2008, 18h20
  4. Réponses: 0
    Dernier message: 21/10/2007, 16h44
  5. Réponses: 2
    Dernier message: 31/08/2006, 12h33

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