C#使用Process類殺死進程,執行命令等

來源:互聯網
上載者:User

c#之process類相關整理

一、根據進程名擷取進程的使用者名稱?

需要添加對 System.Management.dll 的引用

using System.Diagnostics;using System.Management;static void Main(string[] args){foreach (Process p in Process.GetProcesses()){Console.Write(p.ProcessName);Console.Write("----");Console.WriteLine(GetProcessUserName(p.Id));}Console.ReadKey();}private static string GetProcessUserName(int pID){string text1 = null;SelectQuery query1 = new SelectQuery("Select * from Win32_Process WHERE processID=" + pID);ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(query1);try{foreach (ManagementObject disk in searcher1.Get()){ManagementBaseObject inPar = null;ManagementBaseObject outPar = null;inPar = disk.GetMethodParameters("GetOwner");outPar = disk.InvokeMethod("GetOwner", inPar, null);text1 = outPar["User"].ToString();break;}}catch{text1 = "SYSTEM";}return text1;}

 

進程名 是 p.ProcessName

二、擷取進程

using System.Diagnostics;

【注】System.Diagnostics 命名空間提供特定的類,使您能夠與系統進程、事件記錄和效能計數器進行互動。

string str = "";Process[] processes;//Get the list of current active processes.processes = System.Diagnostics.Process.GetProcesses();//Grab some basic information for each process.Process process;for(int i = 0;i<processes.Length-1;i++){process = processes[i];str = str + Convert.ToString(process.Id) + " : " +process.ProcessName + "\r\n";}System.Windows.Forms.MessageBox.Show(str);txtProcessID.Text = processes[0].Id.ToString();//顯示進程相關資訊string s = "";System.Int32 processid;Process process;processid = Int32.Parse(txtProcessID.Text);process = System.Diagnostics.Process.GetProcessById(processid);s = s + "該進程的總體優先順序類別:" + Convert.ToString(process.PriorityClass) + " \r\n";s = s + "由該進程開啟的控制代碼數:" + process.HandleCount + "\r\n";s = s + "該進程的主視窗標題:" + process.MainWindowTitle + "\r\n";s = s + " 該進程允許的最小工作集大小:" + process.MinWorkingSet.ToString() + " \r\n";s = s + "該進程允許的最大工作集大小:" + process.MaxWorkingSet.ToString() + " \r\n";s = s + "該進程的分頁記憶體大小:" + process.PagedMemorySize + "\r\n";s = s + "該進程的峰值分頁記憶體大小:" + process.PeakPagedMemorySize + "\r\n";System.Windows.Forms.MessageBox.Show(s);}catch{System.Windows.Forms.MessageBox.Show("不合法的進程ID!");}

 

【注】Int32 實值型別表示值介於-2,147,483,648 到+2,147,483,647 之間的有符號整數。

Int32 提供了一些方法,來比較該類型的執行個體、將執行個體的值轉換為它的String 表示形式以及將數位String 表示形式轉換為該類型的執行個體。

有關格式規範代碼如何控制實值型別的String 表示形式的資訊,請參閱格式設定概述。

此類型實現介面IComparable、IFormattable 和IConvertible。使用Convert 類進行轉換,而不是使用此類型的IConvertible 顯式介面成員實現。

值得一提的是,Process 類具有很多成員變數,這些成員變數可以獲得進程的幾乎每一個細節。上面的例子中只是簡單地選擇了幾個成員加以示範。如果開發中有需要,可以參考MSDN Library,查詢Process類成員以獲得更詳細的資訊,這裡就不一一列出了。

三、殺死進程

private void button2_Click(object sender, EventArgs e){if (listView1.SelectedItems.Count > 0){try{string proName = listView1.SelectedItems[0].Text;Process[] p = Process.GetProcessesByName(proName);p[0].Kill();MessageBox.Show("進程關閉成功!");GetProcess();}catch{MessageBox.Show("無法關閉此進程!");}}else{MessageBox.Show("請選擇要終止的進程!");}}

 

四、C#中利用process類調用外部程式以及執行dos命令

private string RunCmd(string command){//執行個體一個Process類,啟動一個獨立進程Process p = new Process();//Process類有一個StartInfo屬性//設定程式名p.StartInfo.FileName = "cmd.exe";//設定程式執行參數 p.StartInfo.Arguments = "/c " + command;//關閉Shell的使用 p.StartInfo.UseShellExecute = false; //重新導向標準輸入 p.StartInfo.RedirectStandardInput = true;p.StartInfo.RedirectStandardOutput = true;//重新導向錯誤輸出 p.StartInfo.RedirectStandardError = true; //設定不顯示視窗p.StartInfo.CreateNoWindow = true; //啟動p.Start(); //也可以用這種方式輸入要執行的命令//不過要記得加上Exit要不然下一行程式執行的時候會當機//p.StandardInput.WriteLine(command);//p.StandardInput.WriteLine("exit"); //從輸出資料流取得命令執行結果return p.StandardOutput.ReadToEnd();}

轉載出處

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.