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 :

VB.NET Lancer executable


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut VB.NET Lancer executable
    Bonjour,

    j'utilise Visual Web Developer Express 2008 pour développer une page qui appelé avec des paramètres lance un exe avec des arguements. Quand je la lance à partir de l'outil sur le serveur Web inclus ca fonctionne très bien mais quand je déploie l'application sous IIS et j'essaye de la lancer l'executable n'est pas lançé. Dans les deux cas le fichier log est créé donc le code est bien exécuté dans les deux cas. Voici le code vb appelé quand la page est chargée.

    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
    Imports System.IO
    Imports System.Diagnostics
     
    Partial Class _Default
        Inherits System.Web.UI.Page
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'on calcule les données de la page web
            Dim User As String
            Dim App As String
            Dim Person As String
     
            User = Request.QueryString("user")
            Person = Request.QueryString("person")
     
            App = Request.QueryString("app")
     
            Dim TextFile As New StreamWriter("c:\log.txt")
            TextFile.WriteLine("***************************")
            TextFile.WriteLine(Date.Now.ToString("T"))
            TextFile.WriteLine("Application Lauched: " + App)
            TextFile.WriteLine("User " + User)
            TextFile.WriteLine("patient " + Person)
            TextFile.WriteLine("***************************")
            TextFile.Close()
     
            Dim Program As New Process
            Program.StartInfo.FileName = App
            Program.StartInfo.Arguments = User + " " + Person
            Try
                Program.Start()
            Catch ex As Exception
     
            End Try
     
            Dim pProcess() As Process = Process.GetProcessesByName("iexplore")
            For Each p As Process In pProcess
                p.CloseMainWindow()
            Next
     
        End Sub
     
    End Class

  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

    C'est super dangereux ce que tu essaies de faire... rien n'empêche un utilisateur mal intentionné de transmettre par exemple les valeurs suivantes :
    - app=C:\Windows\System32\format.com
    - user=C:
    - person=(rien)
    Et paf, ton serveur exécute gentiment la commande qui formatte son disque

    Bon, mon exemple est un peu caricatural, mais tu vois l'idée...

    A priori ton programme ne s'exécute pas parce que IIS exécute les applications Web avec un jeu de permissions beaucoup plus restreint, pour des raisons de sécurité.

    Sinon, tu essaies de terminer tous les processes iexplore : mais sur le serveur, en général, il n'y a pas de process iexplore, c'est sur le client que le navigateur tourne, et tu n'y a pas accès... Je ne sais pas si tu as bien réalisé que tout ce que tu fais dans le code d'une page ASP.NET s'exécute sur le serveur et non sur le client

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Par défaut
    En fait mon problème est le suivant. Une application n'est pas capable d'appeler des exe mais uniquement iexplore avec des paramètres. Afin de faire un appel contextuel vers une autre application (.exe). Je ne vois pas d'autres solutions.

    Question exécution sur le serveur, c'est le fonctionnement que je souhaite car les applications vont tourner sur le serveur et seront accessible au client via Citrix.

    Question sécurité, j'imagine qu'il sera possible de limiter les droits du user IIS pour qu'il ne puisse pas exécuter n'importe quoi. Cette page ne sera accessible qu'en interne et pas sur le web donc le risque est déjà limité.

    c'est bien tout ca mais je n'ai pas encore réussi

    Citation Envoyé par tomlev Voir le message

    C'est super dangereux ce que tu essaies de faire... rien n'empêche un utilisateur mal intentionné de transmettre par exemple les valeurs suivantes :
    - app=C:\Windows\System32\format.com
    - user=C:
    - person=(rien)
    Et paf, ton serveur exécute gentiment la commande qui formatte son disque

    Bon, mon exemple est un peu caricatural, mais tu vois l'idée...

    A priori ton programme ne s'exécute pas parce que IIS exécute les applications Web avec un jeu de permissions beaucoup plus restreint, pour des raisons de sécurité.

    Sinon, tu essaies de terminer tous les processes iexplore : mais sur le serveur, en général, il n'y a pas de process iexplore, c'est sur le client que le navigateur tourne, et tu n'y a pas accès... Je ne sais pas si tu as bien réalisé que tout ce que tu fais dans le code d'une page ASP.NET s'exécute sur le serveur et non sur le client

Discussions similaires

  1. [VB.Net] Lancer un téléchargement
    Par Mikiman dans le forum Windows Forms
    Réponses: 5
    Dernier message: 21/01/2008, 11h52
  2. [VB.NET]Lancer une application depuis MonProg
    Par PM_calou dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/09/2006, 11h42
  3. [vb.net] lancer impression dans un service
    Par Invité dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/06/2006, 15h20
  4. [VB.net] Probleme execution requete
    Par nico10gbb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/04/2006, 11h13
  5. Réponses: 5
    Dernier message: 09/06/2005, 20h02

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