none
Process.Start doesn't work on Win Seven RRS feed

  • Question

  • Hello.

    I have a problem with a process that doesn't start on Win 7 but works well on XP:

     

     

    Process Configura = new Process();

    Configura.StartInfo.FileName = "ConfiguraInstaller/Install/install.EXE";

     

     

    Configura.StartInfo.Arguments = "ProcessStart.cs";

     

     

    Configura.Start();

    I already tried to change the requiered execution level but it doesn't work. What is weird is that I can launch other programs in Program Files but not in a specific folder on my Desktop...

    Thank for your help!

    mardi 8 février 2011 20:47

Réponses

  • Bonjour.

    J'ai finallement réussi à faire ce que je souhaitais grâce au "Application.StartupPath". Comme je l'avais dis, le problème venait du fait que par défaut, et même en le spécifiant via StarupPath, le code exécuté sous Win Seven partais automatiquement de "Mes Documents". De plus, l'application étant lancée via un CD, je ne connaissais pas la lettre du lecteur qui lançait le programme (et donc impossible de donner le chemin complet)...

    J'ai donc fait ceci:

    Configura.StartInfo.FileName =Application.StartupPath.Substring(0, 2)+\\ConfiguraInstaller\\Install\\texture.EXE;

    Application.StartupPath.Substring(0, 2) me retourne le nom du lecteur CD auquel je concatene mon chemin (qui est connu). Cette fois ci, ça marche. Je ne comprends par contre pas pourquoi le Application.StartupPath ne fonctionnait pas directement.

    Merci encore pour votre aide.

    • Marqué comme réponse Prometheus62 jeudi 10 février 2011 13:21
    jeudi 10 février 2011 13:18

Toutes les réponses

  • J'avais pas vu que je postais sur le forum français... En gros mon problème est que le code ci dessous fonctionne parfaitement sous Win XP mais pas sous Sevn (même en administrateur).

    Configura.StartInfo.FileName = "ConfiguraInstaller/Install/install.EXE";

    Configura.StartInfo.Arguments = "ProcessStart.cs";

    Configura.Start();

    Lorsque le fichier à lancer est dans Program Files, il n'y a pas de problème, ça se lance. Parcontre quand je souhaite lancer ce même fichier sur le CD où est gravé l'application, une exception est levée indiquant que le fichier n'a pas été trouvé.

    Merci pour votre aide.

    mercredi 9 février 2011 08:02
  • Bonjour,

    Avez-vous essayé de spécifier le chemin complet de install.EXE  ?


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement.
    mercredi 9 février 2011 09:34
  • Bonjour,

    J'ai en effet essayé de récupérer le chemin absolu grâce à:

     

     

    Process Configura = Process.Start(Directory.GetCurrentDirectory().Replace("\\","/")+"/ConfiguraInstaller/Install/texture.EX");

    Mais rien n'y fait.

    Le code indiqué plus haut fonctionne sur XP et c'est ça qui est étrange. Y a-t-il une différence de comportement entre XP et Seven au niveau des Process?

    mercredi 9 février 2011 09:42
  • Apparemment celà est dû à un problème de chemin. Bien que j'indique le chemin absolu/relatif le process se lance par défaut dans "Mes documents". J'ai tenté de "simplement" lancer l'explorer et il s'ouvre par défaut dans "Mes documents" même avec un GetCurrentDirectory.
    mercredi 9 février 2011 10:55
  • Bonjour,

    Ce n'est pas la même chose. Lancer un exécutable qui se trouve à un emplacement (par exemple l'explorateur) ne veut pas dire que c'est l'emplacement de cet exécutable qui sera automatiquement le dossier courant.

    Si le fichier à lancer est relatif à l'exécutable j'utiliserais Application.StartupPath qui retourne le dossier dans lequel se trouve l'exécutable ce qui peut alors servir de base pour trouver les autres fichiers.

    Je vois aussi que l'on utilise / au lieu de \.

    Plus généralement si cela ne marche toujours pas, mon approche serait tout simplement d'afficher le chemin calculé pour vérifier qu'il est bien correct. Si oui et que cela ne marche toujours pas d'utiliser IO.File.Exists pour voir si le fichier est bien trouvé depuis le code avant d'envisager un problème effectivement lié à Process.Start...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    mercredi 9 février 2011 11:59
    Modérateur
  • J'ai essayé d'utiliser Application.StartupPath qui me retourne bel et bien le bon chemin puis j'ai indiqué le chemin relatif à ce dossier d'exécution. Toujours le même résultat: OK sous XP, erreur sous Seven (avec le même CD gravé).

    Le problème ici, c'est que je ne connais pas le chemin absolu (le programme étant diffusé via CD, le lecteur CD peut avoir un nom différent de D sur les différentes machines) et que je suis obligé de gérer mon chemin relatif.

    mercredi 9 février 2011 13:42
  • Je commencerais alors par tester qq chose comme :

      Dim MonFichier As String = "<Nom en dur sur le CD>"
      If Not IO.File.Exists(MonFichier) Then
       MessageBox.Show(MonFichier & " absent.")
       Exit Sub
      End If
      Process.Start(MonFichier)
    

    Le but est déjà de tester si Process.Start est oui on non capable de lancer le fichier qui se trouve sur le CD.


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    jeudi 10 février 2011 12:13
    Modérateur
  • Bonjour.

    J'ai finallement réussi à faire ce que je souhaitais grâce au "Application.StartupPath". Comme je l'avais dis, le problème venait du fait que par défaut, et même en le spécifiant via StarupPath, le code exécuté sous Win Seven partais automatiquement de "Mes Documents". De plus, l'application étant lancée via un CD, je ne connaissais pas la lettre du lecteur qui lançait le programme (et donc impossible de donner le chemin complet)...

    J'ai donc fait ceci:

    Configura.StartInfo.FileName =Application.StartupPath.Substring(0, 2)+\\ConfiguraInstaller\\Install\\texture.EXE;

    Application.StartupPath.Substring(0, 2) me retourne le nom du lecteur CD auquel je concatene mon chemin (qui est connu). Cette fois ci, ça marche. Je ne comprends par contre pas pourquoi le Application.StartupPath ne fonctionnait pas directement.

    Merci encore pour votre aide.

    • Marqué comme réponse Prometheus62 jeudi 10 février 2011 13:21
    jeudi 10 février 2011 13:18