1

我一直认为,当您运行一个进程(domain\user) mydomain\myuser时,使用Process.Start()它时会使用相同的凭据启动这个新进程 - mydomain\myuser

我遇到的问题是我的Process.Start()调用似乎是在 SYSTEM 帐户下创建一个进程,这导致我在启动的进程中出现权限问题(由于它所做的工作,它必须在管理员帐户下运行)。如果它改变了事情 - 我正在从windows installer 中生成这个过程(一个自定义构建的 exe) 。

有什么建议么?我已经阅读了有关 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;
4

2 回答 2

3

将 procInfo.UseShellExecute 设置为 true,或者将 cmd 作为进程执行,并将您的 exe 作为 cmd 命令的参数。当 UseShellExecute 设置为 false 时,这里有很多有趣的副作用:UseShellExecute

于 2010-12-03T11:12:31.993 回答
2

你的印象是真实的。Process.Start() 将始终在当前用户的凭据下启动新进程 - 除非您在中提供替代凭据ProcessStartInfo或使用采用凭据的重载之一。

一定还有另一个问题 - 分享您的代码片段。

更新

好的!你没有提到任何关于安装程序的事情。所有 MSI 安装程序都将在 system 下运行,因为它们将由您可以检查的“ Windows Installer ”运行,并且它们在SYSTEM下运行。

于 2010-12-03T09:22:30.853 回答