我总是给人的印象,当您运行一个过程时 (domain\user) mydomain\myuser, ,使用时 Process.Start() 它将使用相同的凭据开始这个新过程 - mydomain\myuser.

我遇到的问题是我的 Process.Start() 呼叫似乎是在系统帐户下创建一个流程,这使我在开始过程中的权限问题(由于其所做的工作,必须在管理员帐户下运行)。如果它改变了事物 - 我正在从 在Windows安装程序中.

有什么建议么?我已经阅读了有关Windows组政策(可能)对此产生影响的有关Windows组政策的信息,但是如果我说实话,那将失去我。

编辑:一点片段:

在哪里 exenamecommandLine 是此方法主体的参数:

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安装程序“你可以检查一下,他们在下面运行 系统.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top