【问题标题】:running pskill.exe "access denied"运行 pskill.exe “拒绝访问”
【发布时间】:2010-07-20 03:29:46
【问题描述】:

我正在尝试使用 pskill 远程终止进程。

在命令行中,pskill 效果很好,但是在 C# 中尝试相同的命令时,我得到一个拒绝访问错误。

    var startInfo = new ProcessStartInfo {
                                            FileName = "pskill.exe",
                                            Arguments = "-t \\" + _currentMachine + 
                                                        " -u BobSmith -p Pass123 " + _currentService + 
                                                        " /acceptEULA"
                                         };

    try {
        using (Process exeProcess = Process.Start(startInfo)) {
            exeProcess.WaitForExit();
        }
    } catch {
        Console.WriteLine("Cannot forcibly kill process.");
    }

我什至尝试创建一个手动运行良好的 .bat 文件,但在尝试从 C# 调用 .bat 时出现相同的错误。

我在尝试访问 win 2003 服务器的 XP 机器上。

【问题讨论】:

  • BobSmith 账户是否有足够的权限杀死进程?
  • 是的,如果我手动运行 .bat 文件,进程就会被杀死。

标签: process c#-4.0 kill access-denied


【解决方案1】:

为下一个人...

pskill.exe 需要在 Win2000 兼容模式下运行。

【讨论】:

    【解决方案2】:

    我会仔细检查您的凭据。要么就是这样,要么你的进程被“锁定”了。

    【讨论】:

    • 假设你是对的,你知道为什么手动运行 .bat 文件会杀死进程,但如果我从 C# 代码中启动文件则不会。
    • 再看一遍,你是怎么得到你的_CurrentService的。您是否尝试过获取 PID?
    • 还没有,但这是一个很好的建议,下次我得试试。
    • 我总是有更好的运气被 PID 杀死进程。
    【解决方案3】:

    在 C# 中,字符串中的字符默认被转义。您分配给 Arguments 的字符串包含两个转义字符。我怀疑它们变成了一个反斜杠。在字符串定义前添加@ 以解决此问题。

      Arguments = @"-t \\" + _currentMachine + 
    

    无论如何,我建议添加代码以将整个命令行写入文本文件并检查它是否符合您的需要。如果文本文件有bat扩展名能运行成功吗?

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 2021-10-23
      • 1970-01-01
      • 2023-03-07
      • 2021-07-23
      • 2012-11-25
      • 2021-10-17
      • 2017-09-15
      • 1970-01-01
      相关资源
      最近更新 更多