process.start()不在同一用户下产生新过程
-
30-09-2019 - |
题
我总是给人的印象,当您运行一个过程时 (domain\user) mydomain\myuser
, ,使用时 Process.Start()
它将使用相同的凭据开始这个新过程 - mydomain\myuser
.
我遇到的问题是我的 Process.Start()
呼叫似乎是在系统帐户下创建一个流程,这使我在开始过程中的权限问题(由于其所做的工作,必须在管理员帐户下运行)。如果它改变了事物 - 我正在从 在Windows安装程序中.
有什么建议么?我已经阅读了有关Windows组政策(可能)对此产生影响的有关Windows组政策的信息,但是如果我说实话,那将失去我。
编辑:一点片段:
在哪里 exename
和 commandLine
是此方法主体的参数:
ProcessStartInfo procInfo = new ProcessStartInfo(exeName, commandLine);
procInfo.WorkingDirectory = workingDirectory;
procInfo.UseShellExecute = false;
procInfo.CreateNoWindow = true;
Process process = Process.Start(procInfo);
Process.WaitForExit();
return process.ExitCode;
解决方案
将procinfo.useshellexecute设置为true,或者将CMD作为CMD命令的参数作为一个过程。当useshellexecute设置为false时,这里有很多有趣的副作用: useshellexecute
其他提示
您的印象是真的。 process.start()将始终在当前用户的凭据下启动新过程 - 除非您在 ProcessStartInfo
或使用获得凭据的超载之一。
必须还有另一个问题 - 共享代码的摘要。
更新
好的!您没有提及有关安装程序的任何内容。所有MSI安装程序都将在系统下运行,因为它们将由它们运行”Windows安装程序“你可以检查一下,他们在下面运行 系统.
不隶属于 StackOverflow