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

Windows Forms Discussion :

Executer .bat ou .exe sur machine distante via Windows Form


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut Executer .bat ou .exe sur machine distante via Windows Form
    Salut tout le monde ! =)

    Apres de longues et vaines recherches me voici sur le forum pour vous exposer ma problématique !
    Je tente de faire pour le fun une petite appli qui permet d’exécuter des .exe ou des .bat sur des machine distantes de mon réseau local.

    Alors, j'ai bien réussis a lancer le " notepad.exe " et il apparaît bien dans la liste des processus de ma machine cible mais la fenetre de ce logiciel ne s'ouvre pas...

    Voici mon code fait dans un projet test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                /*var connection = new ConnectionOptions();
                connection.Username = @"global\icadio";
                connection.Password = "tempo";
     
                var scope = new ManagementScope("\\\\frc0svw1006\\root\\CIMV2", connection);
                scope.Connect();   // Exception occurs here..*/
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string frc = textBox1.Text;
     
                object[] theProcessToRun = { "notepad.exe" };
                ConnectionOptions theConnection = new ConnectionOptions();
                theConnection.Username = @"global\user";
                theConnection.Password = "password";
                ManagementScope theScope = new ManagementScope("\\\\" + frc + "\\root\\cimv2", theConnection);
                ManagementClass theMngClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
                theMngClass.InvokeMethod("Create", theProcessToRun);
            }
        }
    }
    Quelqu'un aurait une idée pour que quand je lance ma commande, la fenêtre voulue s'ouvre sur la machine cible ?

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Utilise "psexec.exe" sinon tu va galérer je pense.
    Ça doit être des Windows supérieur à XP tes machines distantes, il y a depuis un cloisonnement de l'interface utilisateur.

    Concernant le mode intéractive il est conseiller d'utiliser Win32_ScheduledJob pour ce faire.
    https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx
    The process cannot be interactive
    You can use Win32_ScheduledJob.Create to create an interactive process remotely

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Oui je connais psexec mais la question est: est ce que c'est libre de droits ?
    Ca m'ennuierais qu'on vienne me dire que j'ai pas le droit de m'en servir pour mes projets..

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Salut tout le monde !

    Bon alors d'un point de vue legal ca devrait pas poser de soucis l'utilisation de psexec.

    Donc voici mon code qui fonctionne sur une form toute bete avec 3 textbox et un bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
    using System.Diagnostics;
     
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                string frc = textBox1.Text;
     
                Process bat = new Process();
                bat.StartInfo.UseShellExecute = false;
                bat.StartInfo.CreateNoWindow = true;
                bat.StartInfo.RedirectStandardOutput = true;
                bat.StartInfo.StandardOutputEncoding = Encoding.GetEncoding(850);
     
     
                bat.StartInfo.FileName = @"PsExec.exe";
                bat.StartInfo.WorkingDirectory = @"C:\pstools";
                bat.StartInfo.Arguments = "psexec -i" + @" \\" + frc + @" -u global\" + textBox_login.Text + " -p " + textBox_mdp.Text + @" cmd.exe";
     
                bat.Start();
     
                string standard_output;
                while ((standard_output = bat.StandardOutput.ReadLine()) != null)
     
                    richTextBox1.Invoke(new Action(() => { richTextBox1.AppendText(standard_output + "\r\n"); }));
                bat.WaitForExit();
     
     
     
            }
     
            private void textBox_mdp_TextChanged(object sender, EventArgs e)
            {
                
     
            }
        }
    }
    Avec ca j'arrive a lancer le .exe presents dans le repertoire " System32 " de la machine distante ( est encore pas tous ), mais impossible de lancer un chrome.exe par exemple...

    Erreur: fichier introuvable...

    Sinon concernant Win32_ScheduledJob j'ai pas tout saisis encore ( les WMI et leurs mysteres ! ) alors bon...

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    C'est normal puisque ta console peut aller chercher notepad dans System32 par exemple.
    Mais chrome si tu ne fournies pas le chemin complet vers l'exe il ne te le lancera jamais.
    Fais le test depuis une fenêtre de commande.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2016
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Mars 2016
    Messages : 55
    Points : 20
    Points
    20
    Par défaut
    Ha oui effectivement ça fonctionne mieux quand tu indique le chemin complet ! ^^
    Bon bhe voila ca fonctionne impec !

    Il manque plus qu'a intégrer le psexec.exe au projet afin de faire une appli portable sans dépendance et de trouver la commande pour que la fenêtre cmd ne s'affiche pas sur la remote machine.

Discussions similaires

  1. Execution de l'.exe sur une machine distante
    Par justinedr71 dans le forum Exécution et industrialisation
    Réponses: 8
    Dernier message: 24/05/2011, 14h21
  2. tester la presence d'un repertoire non vide sur une machine distante via rsh
    Par oursquetaire dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 18/05/2009, 17h47
  3. Connexion a une machine sur reseau distant via RealVNC
    Par olibara dans le forum Windows XP
    Réponses: 0
    Dernier message: 25/12/2008, 23h46

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