我有一个WPF应用程序。 对于我的应用程序,我正在设置一个环境变量并更新路径变量。
Environment.SetEnvironmentVariable(var_name, value, EnvironmentVariableTarget.Machine);
第一次运行它会搜索该变量,如果找不到则会设置它。
if (IsSonarRunnerHomePathSet() == false)
{
SetSonarRunnerHomePath(strSonarPath);
}
代码
public bool IsSonarRunnerHomePathSet()
{
try
{
string envJavaHome = Environment.GetEnvironmentVariable("SONAR_RUNNER_HOME", EnvironmentVariableTarget.Machine);
return (envJavaHome != null) ? true : false;
}
catch (Exception ex)
{
throw new Exception(" GetEnvironmentVariable Error -" + ex.Message);
}
}
public void SetSonarRunnerHomePath(string strSonarDirPath)
{
try
{
Environment.SetEnvironmentVariable(sonar_runner_home, strSonarDirPath, EnvironmentVariableTarget.Machine);
}
catch (Exception ex)
{
throw new Exception("SetEnvironmentVariable SONAR_RUNNER_HOME Error - " + ex.Message);
}
}
之后,我使用Process.Start
从我的应用程序执行bat文件,该文件使用此环境变量。
Bat文件在运行时创建,bat文件包含
cd /D someDirPath //someDirPath is provided from user as input
sonar-runner.bat -X // run sonar-runner from someDirPath
和
proc = new Process();
//command to execute
proc.StartInfo.FileName = batchFileName;
proc.StartInfo.UseShellExecute = false;
proc.Start();
但是该过程无法找到该环境变量。
当我第二次运行我的应用程序时,它能够在我的WPF应用程序中找到它:
Environment.GetEnvironmentVariable(var_name, EnvironmentVariableTarget.Machine);
但是当bat文件开始执行时,它仍然无法找到该环境变量。
我在bat文件中添加了一个命令来显示环境变量,我的变量没有显示出来。
但是当我打开命令提示符并给出set
命令来查看环境变量时。
它显示了我的变量。
获得以下错误
'sonar-runner.bat' is not recognized as an internal or external command,
该批处理过程如何才能看到它,即使在第二次也不能看到它?
有任何建议/帮助吗?