2 votes

.net process.start() application 32 bits sur Windows 7 64

Nous avons créé une application qui modifie les fichiers .ini pour une application tierce, afin que les utilisateurs au niveau de l'entreprise puissent accéder aux différents environnements que nous avons installés. Tout fonctionnait bien pour nous lors de l'utilisation de Windows XP. J'ai récemment entrepris de rendre l'application plus compatible avec Windows 7, et de chercher le fichier .ini de l'application tierce sous c:\utilisateurs\public.

L'application tierce est installée et fonctionne correctement, mais lorsque nous exécutons le code ci-dessous à partir d'une machine Windows 7, il se plaint de ne pas trouver ses fichiers .ini.

 manager.EnableRaisingEvents = true;
 manager.StartInfo.FileName = iniChange.getBinPath() + "\\eimngr.exe";
 manager.Start();
 appOpen++;
 magOpen++;

Je me demande si nous avons oublié de définir une propriété de StartInfo ou du Processus.

1voto

GameScripting Points 2922

Mon meilleur avis est que l'application cible ne peut pas trouver le fichier INI car elle utilise des chemins relatifs en interne. Essayez de définir explicitement le répertoire de travail :

string targetFilePath = @"c:\dossier\un_autre_dossier\monappli.exe";
string targetWorkingDirectory = System.IO.Path.GetDirectoryName(targetFilePath);

ProcessStartInfo startInfo = new ProcessStartInfo()
{
    WorkingDirectory = targetWorkingDirectory,
    FileName = targetFilePath,
};

Process targetProcess = new Process();
targetProcess.StartInfo = startInfo;

targetProcess.EnableRaisingEvents = true;

// ...

targetProcess.Start();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X