我一直认为,当您使用(domain\user) mydomain\myuser
运行流程时,使用Process.Start()
时,它会使用相同的凭据启动此新流程 - mydomain\myuser
。
我遇到的问题是我的Process.Start()
调用似乎是在SYSTEM帐户下创建了一个进程,导致我在启动过程中出现权限问题(由于工作原因必须在管理员帐户下运行它确实)。如果它改变了一些东西 - 我在Windows安装程序中从产生这个过程(一个自定义构建的exe)。
有什么建议吗?我已经阅读了关于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;
答案 0 :(得分:3)
将procInfo.UseShellExecute设置为true,或将cmd作为进程执行,并将exe作为cmd命令的参数。当UseShellExecute设置为false时,这里有很多有趣的副作用:UseShellExecute
答案 1 :(得分:2)
你的印象是真实的。 Process.Start()将始终在当前用户的凭据下启动新进程 - 除非您在ProcessStartInfo
中提供备用凭据或使用其中一个获取凭据的重载。
必须有另一个问题 - 分享您的代码片段。
<强>更新强>
OK!你没有提到安装程序的任何内容。所有MSI安装程序都将在系统下运行,因为它们将由“ Windows Installer ”运行,您可以检查它们并在 SYSTEM 下运行。