.net process.start() Windows 7 64 上的 32 位应用程序



我们创建了一个应用程序,用于更改第三方应用程序的.ini文件,因此企业级用户可以访问我们安装的各种环境。这在使用Windows XP时对我们来说效果很好。我最近着手使应用程序对Windows 7更加友好,并在c:\users\public下寻找第3方应用程序.ini文件。

第 3 方应用程序已安装并正常运行,但是当我们从 Windows 7 机器运行下面的代码时,它抱怨找不到其.ini文件。

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

我想知道我们是否错过了设置StartInfo或进程的某些属性。

我最好的猜测是目标应用程序找不到 INI 文件,因为它在内部使用相对路径。尝试显式设置工作目录:

string targetFilePath = @"c:folderanother_foldermyapp.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();

相关内容

最新更新