gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:53 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com