1

我试图通过使用 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 机器上。

4

3 回答 3

1

For the next guy...

pskill.exe needed to be run in Win2000 compatibility mode.

于 2010-07-19T19:29:46.943 回答
0

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

于 2010-07-19T18:50:01.150 回答
0

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

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

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

于 2010-07-19T19:03:26.950 回答