c#关闭系统进程以及如何调用cmd并执行命令

本文介绍了两种使用C#关闭特定进程的方法:一是通过调用cmd命令行并利用ntsd工具结束进程;二是直接使用C#的Process类进行进程终止。此外,还提供了使用Process类执行其他命令(如ping命令)的示例。

今天写聊天服务器程序,需要关闭系统进程。

使用了两种以前使用的方法,一种是调用cmd执行强制关闭命令,另一种是通过C#提供的方法进行关闭

先说第一种
 string ProcessName = "explorer";
//
这里换成你需要删除的进程名称
Process[] MyProcess1 = Process.GetProcessesByName(ProcessName);
Process MyProcess
= new Process();

//设定程序名
MyProcess.StartInfo.FileName = "cmd.exe";

//
关闭Shell的使用
MyProcess.StartInfo.UseShellExecute = false;

//
重定向标准输入
MyProcess.StartInfo.RedirectStandardInput = true;

//
重定向标准输出
MyProcess.StartInfo.RedirectStandardOutput = true;

//
重定向错误输出
MyProcess.StartInfo.RedirectStandardError = true;

//
设置不显示窗口
MyProcess.StartInfo.CreateNoWindow = true;

//
执行强制结束命令
MyProcess.Start();
MyProcess.StandardInput.WriteLine(
"ntsd -c q -p"+(MyProcess1[0].Id).ToString());
//
直接结束进程ID
MyProcess.StandardInput.WriteLine("Exit");

 

 


第二种,通过强大的进程类进行标准关闭。


string ProcessName = "explorer";//换成想要结束的进程名字


Process[] MyProcess = Process.GetProcessesByName(ProcessName);
MyProcess[
0].Kill();

 

 

附另外一个例子:

首先,我们用使用Process类,来创建独立的进程,导入System.Diagnostics 

 
using System.Diagnostics;
实例一个Process类,启动一个独立进程
Process p = new Process();
Process 类有一个 StartInfo 属性,这个是ProcessStartInfo类,包括了一些属性和方法,
下面我们用到了他的几个属性:
设定程序名
p.StartInfo.FileName = "cmd.exe";
关闭Shell的使用
p.StartInfo.UseShellExecute = false;
重定向标准输入
p.StartInfo.RedirectStandardInput = true;
重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
重定向错误输出
p.StartInfo.RedirectStandardError = true;
设置不显示窗口
p.StartInfo.CreateNoWindow = true;
上面几个属性的设置是比较关键的一步。
既然都设置好了那就启动进程吧,
p.Start();
输入要执行的命令,这里就是ping了,
p.StandardInput.WriteLine("ping -n 1 192.192.132.229");
p.StandardInput.WriteLine("exit");
从输出流获取命令执行结果,
string strRst = p.StandardOutput.ReadToEnd();
在本机测试得到如下结果:
"Microsoft Windows 2000 [Version 5.00.2195]/r/n(C) 版权所有
1985-2000 Microsoft Corp./r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>
ping -n 1 192.192.132.231/r/n/r/r/nPinging 192.192.132.231 with 32 bytes of data:/r/r/n/r/r/nReply
from 192.192.132.231: bytes=32 time<10ms TTL=128/r/r/n/r/r/nPing statistics for 192.192.132.231:
/r/r/n    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),/r/r/nApproximate round trip
times in milli-seconds:/r/r/n    Minimum = 0ms, Maximum = 0ms, Average =
0ms/r/r/n/r/nD://himuraz//csharpproject//ZZ//ConsoleTest//bin//Debug>exit/r/n"

最后写出我使用的例子(一个很不错的朋友推荐的:hatch Gavin

/// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
           
            bool runone=false;
            System.Threading.Mutex run = new System.Threading.Mutex(true, "MMWRPG_ChatServer", out runone);
            if (runone)
            {
                run.ReleaseMutex();
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MLChatServer());


            }
            else
            {
                MessageBox.Show("已经运行了一个实例了。");
            }
        }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值