我有一个以nt authority \ system运行的GUI进程。我想作为与GUI流程交互的用户启动另一个流程(最好通过Process
类)。如果我只是调用Process.Start
,新进程也将作为nt authority \ system运行,但我希望它是域\用户。
编辑:为了澄清,我没有当前用户的用户名或密码。我只想运行该过程,就好像用户自己启动它而不必询问用户名/密码。
答案 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对象调用进程时运行'参数,将询问用户的密码。
无法从本地系统帐户以用户帐户身份运行流程。
您可以采取解决方法来解决问题
以登录用户身份启动主流程'A'。
现在,从主流程(A)启动所需的本地系统帐户“B”流程。
现在,如果需要运行主代码(必须在用户帐户中运行的代码),'A'将监视进程B的触发器。如果触发器命中,则可以运行所需的代码。
可以通过监视(读取)每个特定持续时间的文本文件来完成监视,并且可以从写入文本文件的B(系统帐户进程)发送触发器。可以采取任何其他更好的监测方法。