【问题标题】:Process.Start() not spawning new process under the same userProcess.Start() 不在同一用户下生成新进程
【发布时间】:2010-12-03 09:16:34
【问题描述】:

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

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

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

编辑:一点sn-p:

其中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;

【问题讨论】:

  • 您确定原始代码没有以System 运行吗?
  • 是的,100% 确定。我已经通过两种方式检查了这一点 - 一种使用我们生成的 setup exe(并通过任务管理器确保运行它的用户是我)。另外,通过运行我们生成的 MSI,在命令提示符下使用 msiexec 并强制它以我的用户名下的管理权限运行。一旦 process.start() exe 启动,它显示在这两种情况下都由“SYSTEM”运行。

标签: c# security credentials process.start context-switch


【解决方案1】:

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

【讨论】:

  • 我会试一试 CMD 的想法并与我们联系,谢谢您的建议。
  • 我也遇到了这个问题。我已经用我的 exe 作为参数调用cmd,如果我想要错误记录(通过使用RedirectStandardError,我不能将UseShellExecute 设置为true。我该怎么做呢?
【解决方案2】:

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

肯定还有另一个问题 - 分享你的代码的 sn-p。

更新

好的!您没有提及有关安装程序的任何内容。所有 MSI 安装程序都将在系统下运行,因为它们将由您可以检查的“Windows Installer”运行,它们在 SYSTEM 下运行。

【讨论】:

  • 我已经从我的方法中添加了一个 sn-p 来启动该过程,但这并没有什么特别的(而且我没有参数化任何凭据)。感谢您迄今为止的意见,我很想听听您的任何其他想法。
  • 部分项目是基于 Web 的,但安装程序和 exe 只是常规的 .Net 代码。
  • 我说得很清楚(在任何编辑之前)“从 Windows 安装程序中。”。最重要的是,setup.exe / MSI 可以在任何帐户下运行。
  • 所以我一定错过了 - 这是你想要强调的东西。我看到你收回了你的 10 分,这很好,但正如我再次所说,设置的 MSI 部分始终由 MSI 安装程序服务运行。您可以使用各种工具来验证这一点,包括进程资源管理器,其中您的进程显示在 msiexec.exe 下,并且每当您运行安装程序时,您都会看到一个 msiexec.exe 进程 oi 已启动,完成后它会消失。
猜你喜欢
  • 1970-01-01
  • 2013-10-14
  • 2011-03-31
  • 1970-01-01
  • 2010-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多