Mik*_*lin 5 .net c# environment-variables
我正在开发一个调用外部进程的应用程序,如下所示:
ProcessStartInfo startInfo = new ProcessStartInfo(PathToExecutable, Arguments){
ErrorDialog = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
WorkingDirectory = WorkingDirectory
};
using (Process process = new Process()) {
process.StartInfo = startInfo;
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
process.WaitForExit();
return process.ExitCode;
}
Run Code Online (Sandbox Code Playgroud)
我正在调用的进程之一取决于我不希望我的用户设置的环境变量。有没有办法修改发送到外部进程的环境变量?理想情况下,我可以让它们仅对正在运行的进程可见,但是如果我必须以编程方式在系统范围内设置它们,我会满足于此(但是,UAC 会强制我以管理员身份运行吗? )
ProcessStartInfo.EnvironmentVariables 是只读的,所以很多帮助是...
不过,您可以为其添加值。
从MSDN ProcessStartInfo.EnvironmentVariables 属性:
尽管您无法设置 EnvironmentVariables 属性,但您可以修改该属性返回的 StringDictionary。例如,以下代码添加了一个 TempPath 环境变量:
myProcess.StartInfo.EnvironmentVariables.Add("TempPath", "C:\\Temp"). 您必须将UseShellExecute属性设置为false才能在更改 EnvironmentVariables 属性后启动进程。如果 UseShellExecute为true,则在调用 Start 方法时抛出 InvalidOperationException 。
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |