什么是环境变量概念?
在一个C#程序中,我需要调用一个可执行文件。该可执行文件会调用一些与其位于同一文件夹中的其他可执行文件。这些可执行文件依赖于"PATH"和"RAYPATH"两个环境变量被正确设置。我尝试了以下两种方法:
- 我创建了一个进程并在StartInfo中设置了这两个变量。这些变量已经存在但缺少所需的信息。
- 我尝试使用 System.Environment.SetEnvironmentVariable() 方法来设置这些变量。
当我运行这个进程时,系统找不到可执行文件 ("executeable1")。我尝试将 StartInfo.FileName 设置为 "executeable1" 的完整路径 - 但是此时由 "executeable1" 中调用的 EXE 文件无法找到...
我该怎么处理这个问题?
string pathvar = System.Environment.GetEnvironmentVariable("PATH");
System.Environment.SetEnvironmentVariable("PATH", pathvar + @";C:\UD_\bin\DAYSIM\bin_windows\;C:\UD_\bin\Radiance\bin\;C:\UD_\bin\DAYSIM;");
System.Environment.SetEnvironmentVariable("RAYPATH", @"C:\UD_\bin\DAYSIM\lib\;C:\UD_\bin\Radiance\lib\");
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.WorkingDirectory = @"C:\UD_\bin\DAYSIM\bin_windows";
//string pathvar = p.StartInfo.EnvironmentVariables["PATH"];
//p.StartInfo.EnvironmentVariables["PATH"] = pathvar + @";C:\UD_\bin\DAYSIM\bin_windows\;C:\UD_\bin\Radiance\bin\;C:\UD_\bin\DAYSIM;";
//p.StartInfo.EnvironmentVariables["RAYPATH"] = @"C:\UD_\bin\DAYSIM\lib\;C:\UD_\bin\Radiance\lib\";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.StartInfo.FileName = "executeable1";
p.StartInfo.Arguments = arg1 + " " + arg2;
p.Start();
p.WaitForExit();
cmd.exe
替换executable1
,这样你就可以看到环境是什么样子的了?这可能会给你一些线索。 - Harry Johnston