none
Ejecutar Exe desde c#

    Pregunta

  • Hola a todos! Tengo que crear una aplicacion en C#.Net, que se encargue de validar y ejecutar dos aplicaciones. Una de ellas, realizada en C#.Net, y la otra en Visual Fox Pro. El tema es que mi aplicacion deberia hacer un par de validaciones antes de llamar al ejecutable. Luego de eso, si todo se encuentra bien, deberia mandar un parametro. Esto lo haria para evitar que puedan entrar a las aplicaciones ejecutando el .exe directamente.

    Seria algo como:

    Aplicacion ...... Ejecutar Aplicacion 1 ..... Validar ...... Si Validar = OK ..... Ejecutar Aplicacion 1 (recibe parametro OK)

    Si se intentara ejecutar la Aplicacion 1 mediante el .exe, el parametro OK deberia ser false (no se ejecutaria la aplicacion)

    De paso, si saben, me comentan como puede mi aplicacion recibir ese parametro.

    Muchas gracias !

    lunes, 19 de marzo de 2012 12:00

Respuestas

  • a que si el cliente ejecutara el .exe del sistema y no el de la aplicacion, se saltaria la validacion.

    ahh bien entonces como comente usa la clase process con el parametro "Argument"

    Process p = new Process();
    ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");
    psi.Arguments = "/c \"first.exe -a -b -c | second.exe\"";
    p.StartInfo = psi;
    p.Start();

    de esta forma pasarias el parametro que necesitas para el control de licencia

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 13:01
    lunes, 19 de marzo de 2012 12:23
  • Como defino ese parametro en la aplicacion ?

    hay varias formas una es definiendo en el metodo Main() que esta en Programs.cs el argumento que alli dispones

    la otra es usando Environment.GetCommandLineArgs

    GetCommandLineArgs

    con este puedes accederlo desde cualquier parte de la aplicacion y no solo del Main()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 13:01
    lunes, 19 de marzo de 2012 12:43
  • usas

    startInfo.Arguments = "OK TRIAL";

    el espacio entre cada valor indica un parametro diferente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 14:46
    lunes, 19 de marzo de 2012 14:08

Todas las respuestas

  • Si se intentara ejecutar la Aplicacion 1 mediante el .exe

    o sea vas a usar el

    Process.Start("c:\carpeta\aplicacion.exe")

    para lanzar la aplicacion como menciono aqui

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/bf7ffe77-1720-418f-8b54-e6b3174000a0

    en donde defines un Argument

    lo que no quedo claro es que serian esasa validaciones

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 19 de marzo de 2012 12:10
  • Leandro, como estas ? muchas gracias por tu respuesta. Con lo de las validaciones, me refiero a un control de licencias. Cuando la aplicacion es adquirida por un cliente, la misma tiene una validez de 1 año. Luego, si no se activa, la misma deja de funcionar. Este control ya lo tengo listo y funcionando. La idea es que esta aplicacion valide esto, y luego envie un parametro (true o false)

    Por eso necesito enviar el parametro, ya que si el cliente ejecutara el .exe del sistema y no el de la aplicacion, se saltaria la validacion. De esta manera, valido antes de ejecutar el sistema. Me explico ?

    lunes, 19 de marzo de 2012 12:20
  • a que si el cliente ejecutara el .exe del sistema y no el de la aplicacion, se saltaria la validacion.

    ahh bien entonces como comente usa la clase process con el parametro "Argument"

    Process p = new Process();
    ProcessStartInfo psi = new ProcessStartInfo("cmd.exe");
    psi.Arguments = "/c \"first.exe -a -b -c | second.exe\"";
    p.StartInfo = psi;
    p.Start();

    de esta forma pasarias el parametro que necesitas para el control de licencia

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 13:01
    lunes, 19 de marzo de 2012 12:23
  • Bien ! Ahora mismo voy a probarlo.

    Por otro lado, mi aplicacion ahora va a recibir un parametro. El mismo debe ser TRUE unicamente si ejecutan la nueva aplicacion y se valida la licencia, o FALSE si no se valida la licencia o se ejecuta el .exe directamente.

    Como defino ese parametro en la aplicacion ?

    lunes, 19 de marzo de 2012 12:30
  • Como defino ese parametro en la aplicacion ?

    hay varias formas una es definiendo en el metodo Main() que esta en Programs.cs el argumento que alli dispones

    la otra es usando Environment.GetCommandLineArgs

    GetCommandLineArgs

    con este puedes accederlo desde cualquier parte de la aplicacion y no solo del Main()

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 13:01
    lunes, 19 de marzo de 2012 12:43
  • Perfecto ! anduvo todo a la perfección ..

    muchas gracias Leandro !!

    lunes, 19 de marzo de 2012 13:01
  • Leandro, me ha surgido una duda: 
     string ruta;
                    System.Diagnostics.Process pStart = new System.Diagnostics.Process();
    
                    ruta = "C:\\Myapp.exe";
                    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ruta);
                    
                    startInfo.Arguments = "OK";
                    startInfo.Arguments = "TRIAL";

    Como puedo enviar más de un parametro ? En el codigo anterior, el string que paso en Arguments se sobreescribe. Como hago para enviar los 2 ? 
    lunes, 19 de marzo de 2012 14:04
  • usas

    startInfo.Arguments = "OK TRIAL";

    el espacio entre cada valor indica un parametro diferente

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta rlavisse lunes, 19 de marzo de 2012 14:46
    lunes, 19 de marzo de 2012 14:08
  • PERFECTO !! MUCHISIMAS GRACIAS !!
    lunes, 19 de marzo de 2012 14:46
  • Me puedes pasar un ejemplo de uso de licencias.

    Yo tambien estoy interesado en que una persona desde su casa ejecute la aplicacion .EXE pero solo por 1 año.

    Como lo haces? en el instalador le pones unos campos para que los rellene con una licencia, tipo la instalacion del Office?

    Necesitas un servidor de base de datos? cuya aplicacion del cliente se conecta cada vez que se inicia y comprueba que la licencia de la aplicacion es la misma que la de la base de datos?

    Explicame un poco :) o pasame algun tutorial para que lo vaya estudiando.

    Gracias

    domingo, 22 de abril de 2012 22:25