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

时间:2012-10-09 19:52:55

标签: .net windows-7

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

第三方应用程序已安装且运行正常,但当我们从Windows 7计算机运行以下代码时,它会抱怨它无法找到其.ini文件。

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

我想知道我们是否错过了设置StartInfo或Process的一些属性。

1 个答案:

答案 0 :(得分:1)

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

string targetFilePath = @"c:\folder\another_folder\myapp.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();