C# 过程不';不要以正确的用户名开始

C# 过程不';不要以正确的用户名开始,c#,process,process.start,C#,Process,Process.start,我正在办理续签申请。旧代码有一个main方法,它遍历windows上运行的进程,检查作为应用程序一部分的某个必需进程是否正在运行,如果没有,则启动它。这就是它的样子: Process[] localProcesses = Process.GetProcesses(Environment.MachineName); bool isHostAlive = false; foreach (Process localProc in localProcesses) { if (localProc

我正在办理续签申请。旧代码有一个main方法,它遍历windows上运行的进程,检查作为应用程序一部分的某个必需进程是否正在运行,如果没有,则启动它。这就是它的样子:

Process[] localProcesses = Process.GetProcesses(Environment.MachineName);
bool isHostAlive = false;
 foreach (Process localProc in localProcesses)
 {
   if (localProc.ProcessName == "processIneed")
  {
      isHostAlive = true;
  }
 }
  if (!isHostAlive)
 {
   try
  {
      Process.Start(Application.StartupPath + @"\bin\processIneed.exe");
  }
....
现在我所做的是添加一个installer类,在该类中我重写了Commit方法,并在那里激活了该进程,以便它在安装应用程序后自动运行。看起来是这样的:

string path = Context.Parameters["targetdir"].Replace(@"\\", @"\");
path += @"bin\processIneed.exe";
Process.Start(path);
问题是,按照旧方法,在安装过程中没有激活流程,一切正常。当我以我实现的新方式启动流程时,我看到路径正在正确构建,流程确实在后台运行,但应用程序无法正常工作。。这有点“一半”的效果。。我没有收到任何错误或异常,但它就是不起作用

我注意到的唯一区别是,使用旧代码时,进程是在登录到windows的用户名(在登录屏幕中输入用户名和密码)下启动的,而在新代码中,进程是在用户
系统
下启动的


是否有方法使用正确的凭据从installer类启动进程?我想澄清一下,我不想以某种方式向用户请求密码,也不想保存密码或其他东西。。只需从当前登录的凭据开始,而不是从系统用户开始。

这可能会有所帮助,@christiandev它起作用了!把它写下来作为答案,我会接受它作为正确的答案。