Process.Start()不会在同一用户下产生新的进程
我一直觉得,当你使用Process.Start()
作为(domainuser) mydomainmyuser
运行一个进程时,它会使用相同的凭证 - mydomainmyuser
启动这个新进程。
我遇到的问题是我的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;
将procInfo.UseShellExecute设置为true,或者使用exe作为cmd命令的参数执行cmd作为进程。 当UseShellExecute设置为false时,这里有很多有趣的副作用:UseShellExecute
你的印象是真实的。 Process.Start()将始终在当前用户的凭据下启动新进程 - 除非您在ProcessStartInfo
提供备用凭证或使用其中一个接受凭证的重载。
必须有另一个问题 - 分享你的代码片段。
UPDATE
好! 你没有提到有关安装程序的任何信息。 所有MSI安装程序将在系统下运行,因为它们将由“ Windows安装程序 ”运行,您可以检查它们并在SYSTEM下运行。
链接地址: http://www.djcxy.com/p/61105.html上一篇: Process.Start() not spawning new process under the same user