我正在开发一个 C# 应用程序。
我需要创建变量并将其传递给一个新进程,我正在使用ProcessStartInfo.EnvironmentVariables
.
新进程必须运行提升,所以我使用 Verb = "runas"
var startInfo = new ProcessStartInfo(command)
{
UseShellExecute = true,
CreateNoWindow = true,
Verb = "runas"
};
foreach (DictionaryEntry entry in enviromentVariables)
{
startInfo.EnvironmentVariables.Add(entry.Key.ToString(), entry.Value.ToString());
}
问题是根据msdn 文档:
更改属性后,您必须将该
UseShellExecute
属性设置为 false才能启动该过程EnvironmentVariables
。如果UseShellExecute
为 true,InvalidOperationException
则在调用 Start 方法时抛出 an。
但该runas
变量需要UseShellExecute=true
有没有办法做到这两点:以提升的方式运行进程并设置环境变量?
编辑
我会尝试改写我的问题...
有没有办法将参数安全地传递给另一个进程,这样只有另一个进程才能读取参数。