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

ASP.NET Discussion :

[C#] Lancer une application visible en code behind


Sujet :

ASP.NET

  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [C#] Lancer une application visible en code behind
    Bonjour,

    Je n'arrive pas à lancer une application en code behind.
    Enfin, si, j'y arrive, mais elle s’exécute en tache de fond, elle est présente dans la liste des processus mais elle n’apparait pas à l’écran.
    Je me suis fait les dents sur pas mal de solutions (j'ai essayé sur le bloc notes et la calculette), mais rien n'y fait:
    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
                                /*Process p = new Process();
                                p.StartInfo.RedirectStandardOutput = true;
                                p.StartInfo.UseShellExecute = false;
                                p.StartInfo.FileName = @"C:\WINDOWS\system32\notepad.exe";
                                //p.StartInfo.Arguments = "192.168.1.1";
                                p.Start();
                                while (!p.StandardOutput.EndOfStream) {
                                    Console.WriteLine(p.StandardOutput.ReadLine());
                                } // */
     
                                /*ProcessStartInfo psi = new ProcessStartInfo() {
                                    FileName = src, // @"C:\windows\system32\notepad.exe",
                                };
                                Process process = Process.Start(psi);
                                while (process.MainWindowHandle == IntPtr.Zero) { // Wait until the process has a main window handle.
                                    process.Refresh();
                                }
                                ShowWindow(process.MainWindowHandle, 1); // */
     
                                /*Process myProcess = new Process();
                                /*myProcess.StartInfo.UseShellExecute = true;
                                myProcess.StartInfo.FileName = src;
                                myProcess.StartInfo.CreateNoWindow = false;
                                myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                                myProcess.Start(); // */
     
                                /*System.Diagnostics.ProcessStartInfo info = new System.Diagnostics.ProcessStartInfo("\"" + src + "\"", ""); // -enc \"UTF-8\" \"" + chemFic + "\" \"" + chemRep + nomFicTmp + "\"
                                info.RedirectStandardOutput = true;
                                info.UseShellExecute = false;
                                info.CreateNoWindow = false;
                                info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
                                System.Diagnostics.Process p = System.Diagnostics.Process.Start(info); // Démarrer le processus
    Est ce que quelqu'un peut m'aider ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Si tu veux juste lancer l'application sans options particulières, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process.Start("le_programme", "les_arguments");
    Normalement ça marche sans problème...

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Hmmm, quel intérêt de lancer une application visible sur le serveur?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Hmmm, quel intérêt de lancer une application visible sur le serveur?
    arf, j'avais pas vu que c'était en ASP.NET...



    Si le but est de lancer l'appli sur le poste client, te fatigue pas c'est impossible (et heureusement !), à moins que tu ne trouves une grosse faille de sécurité dans le navigateur...

    Si c'est pour lancer l'appli sur le serveur, comme dit lutecefalco : pour quoi faire ? A priori il n'y a personne devant le serveur pour utiliser l'application...

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Si, j'en ai besoin.

    Disons que pour le mode administration (qui se connecte à l'appli sur le serveur en question), j'aimerais pouvoir faire des liens vers d'autres appli installées sur ce même serveur.

    Dans mon cas, c'est plus qu'un petit confort, ça fait partie d'un process.

    Donc, est ce que c'est possible, selon vous ?

  6. #6
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu peux lancer sur le serveur des applications installées sur le serveur

  7. #7
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Ok, c'est exactement ce que je veux faire...
    Pour être plus précis:
    - L'utilisateur se connecte sur mon appli Web SUR le serveur.
    - Il y a un lien sur une page web qui fait appel à un handler.ashx.
    - Le script dans l'Ashx lance une appli passée en paramètre (ex: la calculette).
    - L'appli se lance en mode visible et l'utilisateur peut l'utiliser.

    Mais toutes les solutions essayées ci dessus me lancent bien l'application, mais pas en mode windows... Elle est en tache de fond... Invisible.

    Commen faire, donc ?

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Je pense que c'est parce que l'utilisateur ASP.NET n'a pas ouvert de session interactive, il n'y a donc pas d'interface graphique disponible

  9. #9
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Je ne sais pas du tout ce qu'est une session interactive...

    PS: J'ai édité plus haut, pour plus d'infos.

  10. #10
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Pourquoi tu fais une appli web si tout se passe en local?

  11. #11
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Il y a des process qui doivent se passer en local... Pour pouvoir utiliser les applis WinForm (entre autres), justement.

    Je pense que dans l'histoire de l'informatique, il y a déjà eu quelques cas de détournement du principe de base d'une techno.

    Donc, pouvez vous me dire si c'est possible ou non ?

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par dacid Voir le message
    Je ne sais pas du tout ce qu'est une session interactive...
    C'est quand tu ouvres une session Windows toi-même, par exemple avec ton compte "dacid", et que tu as accès au bureau etc

    Les applis web sont exécutées par IIS avec un compte d'utilisateur spécifique (ASPNET par exemple), qui n'a normalement pas besoin d'interface utilisateur et ouvre donc une session non interactive.

    Voilà pour l'explication, mais je ne vois pas trop comment résoudre le problème de façon simple...

  13. #13
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Tu veux dire, en mode connexion IIS... Non, ce mode n'est pas envisagé dans mon appli.
    Je gère moi même par script les connexions et la page d'authentification.


    Tu me fais peur, là... Je ne pensais pas rencontrer de telles difficultés...

  14. #14
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Pour info, si je lance l'exe avec cassini (mode débug de VS), ça fonctionne.
    Dans la liste des processus, il met mon nom dans "utilisateurs".
    Mais si je le lance sous IIS, il met qu'il appartient à "ASPNET" et je ne vois rien.
    (ca doit avoir un lien avec la session interactive citée plus haut)

    N'y a t-il pas un truc à faire à ce niveau là ?

  15. #15
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bon, j'avance, mais comme un crabe...
    Avec ça, ca fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
                                var info = new ProcessStartInfo(src);
                                info.FileName = @"calc.exe";
                                info.WorkingDirectory = @"C:\windows\system32";
                                info.UseShellExecute = false;
                                info.LoadUserProfile = true;
                                info.UserName = "monNom";
                                SecureString ss = new SecureString();
                                ss.AppendChar('T');
                                ss.AppendChar('e');
                                ss.AppendChar('m');
                                ss.AppendChar('p');
                                ss.AppendChar('1');
                                info.Password = ss; // */
                                Process.Start(info);
    Mais le pb est que je ne sais pas qui sera connecté sur le PC et encore moins son mot de passe.

    N'y a t-il pas moyen de juste lui dire de lancer l'appli sur l'utilisateur connecté ?
    Est ce qu'on peut lancer une appli en WMI ?

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par dacid Voir le message
    N'y a t-il pas moyen de juste lui dire de lancer l'appli sur l'utilisateur connecté ?
    "juste lui dire", non, mais tu pourrais bidouiller... Par exemple avoir un programme lancé par l'utilisateur à l'ouverture de sa session, qui écoute (en remoting ou WCF par exemple) des "commandes" de lancement d'un exe, et lance l'exe demandé dans la session de l'utilisateur courant. Mais c'est pas beau, et il faut faire gaffe à la sécurité...

  17. #17
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Et avec un site en authentication mode = window et impersonate = true, ça ne marcherait pas?

  18. #18
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Oui, ça fonctionnerait, mais non, je ne peux pas mettre mon site en auth Windows (si c'est bien la fenêtre qui demande les logs pour accéder au site).


    Par contre, je ne connais pas impersonate... Je vais investiguer.

  19. #19
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par dacid Voir le message
    si c'est bien la fenêtre qui demande les logs pour accéder au site.
    Si t'es loggé sous windows, t'es automatiquement reconnu

  20. #20
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Même pour les connexions distantes ?
    Il ne faut pas que ca change quoi que ce soit aux clients invités. Je veux garder le principe de ma connexion par formulaire.

    Dans ce cas là, que faut il faire pour qu'il s'appuye sur l'utilisateur connecté pour executer des appli sous son nom ?

Discussions similaires

  1. [AC-2003] Code pour lancer une application en cliquant dans un formulaire
    Par yieiyiei dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/03/2015, 07h00
  2. Réponses: 4
    Dernier message: 24/02/2011, 15h57
  3. Lancer une application depuis un code fortran
    Par news4teab dans le forum Fortran
    Réponses: 2
    Dernier message: 22/04/2010, 09h38
  4. [API] Lancer une application externe via un code Java
    Par k o D dans le forum Général Java
    Réponses: 19
    Dernier message: 09/03/2006, 15h12
  5. Réponses: 2
    Dernier message: 05/12/2003, 11h37

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