我试图使用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机器上。
答案 0 :(得分:1)
对于下一个人......
pskill.exe需要在Win2000兼容模式下运行。
答案 1 :(得分:0)
我会仔细检查你的凭据。这或者你的过程被“锁定”了。
答案 2 :(得分:0)
在C#中,字符串中的字符默认是转义的。分配给Arguments的字符串包含两个转义字符。我怀疑他们变成了一个反斜杠。在字符串定义前添加@
以解决此问题。
Arguments = @"-t \\" + _currentMachine +
在任何情况下,我都建议添加代码将整个命令行写入文本文件,并检查它是否符合您的需要。如果文本文件有一个bat扩展名,你可以成功运行吗?