c# - 进程没有以正确的用户名开头

标签 c# process process.start

我正在更新一个应用程序。旧代码有一个主要方法,该方法会检查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");
  }
....


现在,我要做的是添加一个安装程序类,在其中我重写Commit方法,并在那里激活了进程,因此该进程将在安装应用程序后自动运行。看起来像这样:

string path = Context.Parameters["targetdir"].Replace(@"\\", @"\");
path += @"bin\processIneed.exe";
Process.Start(path);


问题是,以旧的方式,如果在安装过程中未激活该过程,则一切运行正常。当我以已实现的新方式启动流程时,我看到路径正在正确构建,并且流程确实在背景中运行,但是应用程序无法正常运行。它有点“一半”。我没有收到任何错误或异常,但这只是行不通。

我注意到的唯一区别是,对于旧代码,该过程以登录到Windows的用户名(在登录屏幕中输入的用户名和密码)启动,而在新代码中,该过程在用户< cc>。

有没有办法使用正确的凭据从安装程序类启动该过程?我想说明一下,我不想以某种方式向用户请求密码,也不想保存它或其他东西。.只是从当前登录的凭据而不是SYSTEM用户开始。

最佳答案

在此处尝试此链接,它似乎与您要查找的Run process under current user类似

关于c# - 进程没有以正确的用户名开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909652/

相关文章:

c# - 如果用户在 WPF 中键入任何内容,请检查 PasswordBox

c# - 如何检查组合 ID 是否存在?

c# - 为 Container->(Container)->Item 设计通用数据结构/存储

c++ - 如何从 session ID 中查找用户名?

ruby-on-rails - 我将如何产生 Heroku 工作人员来分而治之关键字列表?

c# - 锁与 bool

linux - linux中计算多个进程cpu使用率的有效方法

c# - Windows 服务如何在引发计时器事件时启动进程?

c# - 在C#中顺序执行多个Process.Start()

VB.Net 使用 FoxIt Reader 或 Adob​​e Reader 打印 PDF