用户与UI交互时运行新流程

时间:2016-12-28 23:14:08

标签: c# winforms

我有一个以nt authority \ system运行的GUI进程。我想作为与GUI流程交互的用户启动另一个流程(最好通过Process类)。如果我只是调用Process.Start,新进程也将作为nt authority \ system运行,但我希望它是域\用户。

编辑:为了澄清,我没有当前用户的用户名或密码。我只想运行该过程,就好像用户自己启动它而不必询问用户名/密码。

4 个答案:

答案 0 :(得分:1)

使用具有有效凭据的StartInfo属性。

Process proc = new Process();

proc.StartInfo.Domain = "YourDomain";
proc.StartInfo.UserName = "Username";
proc.StartInfo.Password = "YourPassword";

答案 1 :(得分:1)

你可以这样做:

Process proc = new System.Diagnostics.Process();
System.Security.SecureString ssPwd = new System.Security.SecureString();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.FileName = "C:/YourPath/YourProcess.exe";
proc.StartInfo.Arguments = "Args"; //Arguments if any, otherwise delete this line
proc.StartInfo.Domain = "domainname";
proc.StartInfo.UserName = "username";
proc.StartInfo.Password = "password";
proc.Start();

答案 2 :(得分:1)

var psi = new ProcessStartInfo(); 
psi.Verb = "runas"; 
psi.FileName = "notepad.exe";
Process.Start(psi);

答案 3 :(得分:0)

'在使用Process对象调用进程时运行'参数,将询问用户的密码。

无法从本地系统帐户以用户帐户身份运行流程。

您可以采取解决方法来解决问题

  1. 以登录用户身份启动主流程'A'。

  2. 现在,从主流程(A)启动所需的本地系统帐户“B”流程。

  3. 现在,如果需要运行主代码(必须在用户帐户中运行的代码),'A'将监视进程B的触发器。如果触发器命中,则可以运行所需的代码。

  4. 可以通过监视(读取)每个特定持续时间的文本文件来完成监视,并且可以从写入文本文件的B(系统帐户进程)发送触发器。可以采取任何其他更好的监测方法。