【发布时间】:2010-12-03 09:16:34
【问题描述】:
我一直认为,当您以 (domain\user) mydomain\myuser 运行进程时,使用 Process.Start() 时,它将使用相同的凭据 - mydomain\myuser 启动这个新进程。
我遇到的问题是我的Process.Start() 调用似乎是在 SYSTEM 帐户下创建一个进程,这导致我在启动的进程中出现权限问题(由于它所做的工作,它必须在管理员帐户下运行)。如果它改变了事情 - 我正在从 Windows 安装程序中生成这个进程(一个自定义构建的 exe)。
有什么建议吗?我已经阅读了有关 Windows 组策略(可能)对此有影响的信息,但如果我说实话,我已经失去了它。
编辑:一点sn-p:
其中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;
【问题讨论】:
-
您确定原始代码没有以
System运行吗? -
是的,100% 确定。我已经通过两种方式检查了这一点 - 一种使用我们生成的 setup exe(并通过任务管理器确保运行它的用户是我)。另外,通过运行我们生成的 MSI,在命令提示符下使用 msiexec 并强制它以我的用户名下的管理权限运行。一旦 process.start() exe 启动,它显示在这两种情况下都由“SYSTEM”运行。
标签: c# security credentials process.start context-switch