gpt4 book ai didi

c# - 为进程设置环境变量

转载 作者:IT王子 更新时间:2023-10-29 03:57:22 26 4
gpt4 key购买 nike

什么是环境变量概念?

在 C# 程序中,我需要调用可执行文件。该可执行文件将调用位于同一文件夹中的其他一些可执行文件。可执行文件依赖于正确设置两个环境变量“PATH”和“RAYPATH”。我尝试了以下两件事:

  1. 我创建了一个进程并在 StartInfo 中设置了两个变量。这变量已经存在,但缺少所需的信息。
  2. 我试着用 System.Environment.SetEnvironmentVariable()。

当我运行进程时,系统找不到可执行文件(“executeable1”)。我试图将 StartInfo.FileName 设置为“executeable1”的完整路径 - 但是随后找不到“executeable1”中名为 form 的 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();

最佳答案

你的问题到底是什么? System.Environment.SetEnvironmentVariable 更改当前进程的环境变量。如果您想更改您创建的进程的变量,只需使用 EnvironmentVariables 字典属性:

var startInfo = new ProcessStartInfo();

// Sets RAYPATH variable to "test"
// The new process will have RAYPATH variable created with "test" value
// All environment variables of the created process are inherited from the
// current process
startInfo.EnvironmentVariables["RAYPATH"] = "test";

// Required for EnvironmentVariables to be set
startInfo.UseShellExecute = false;

// Sets some executable name
// The executable will be search in directories that are specified
// in the PATH variable of the current process
startInfo.FileName = "cmd.exe";

// Starts process
Process.Start(startInfo);

关于c# - 为进程设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14553830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com