2013-01-31 2 views
6

の一部でプロセスを強制終了:C#の - 私はこのように、C#でそれを行う方法を探しています、それの名前

foreach (Process proc in Process.GetProcessesByName("cheatengine-x86_64")) 
{ 
    proc.Kill(); 
} 

私はこの文を使用していますが、プログラムの異なるバージョンが存在しますちょうどcheatengineやcheatengine-x86のように、古いバージョンを避けるために、「チート」という名前、または単に「チート」という名前から始めて、これらのうちのいずれかを終了したいと思います。

+0

あなたはこれまでに何を試しましたか?明らかに、あなたが投稿したコードを試しましたが、私はそれ以外で何をしましたか? – Brian

+0

このようなコードを回避するためにユーザーが行う必要があることは、チートツールの.exeファイルの名前を変更することです。 – Brian

+0

はい、お返事ありがとうございます。これは単なる教育的関心事ですが、実際に私はこの研究をより大きなプロジェクトにするために取り組んでいます。すべての答えをありがとう – SpoKe

答えて

3

各プロセス名を反復処理して正規表現にマッチさせ、一致する場合はそれを削除することができます。

Regex regex = new Regex(@"cheate.*"); 
foreach (Process p in Process.GetProcesses(".")){ 
    if(regex.Matches(p.ProcessName)) 
     p.Kill(); 
} 

このようなもの。

この利点は、特定の正規表現で始まる、または特定の正規表現で終わるすべてのプロセスを強制終了できることです。

+0

これは正規表現の '@" cheate。* "'にする必要があります。 –

+0

@EricAndresそれに感謝します:-) –

+0

ありがとうございました! – SpoKe

1

Process.GetProcesses()を使用し、Linqを使用して殺すものをフィルタリングします。

+0

答えをありがとう! – SpoKe

+0

小さな誤字:セミコロンをaに置き換える必要がある場合は末尾に) –

1

はこちらから適応:http://www.howtogeek.com/howto/programming/get-a-list-of-running-processes-in-c/

using System.Diagnostics; 


Process[] processlist = Process.GetProcesses(); 

foreach(Process theprocess in processlist) 
{ 

    if(theprocess.ProcessName.StartsWith("cheat"); 
     theprocess.Kill(); 
} 

これは単なる目安である、あなたがプロセスをマッチさせたい任意の方法を使用することができます。私は大文字小文字を無視することをお勧めしますが、偽陽性の場合は非常に慎重です。私はあなたのプログラムに満足できないでしょう。

+0

ありがとうございました! – SpoKe

10
System.Diagnostics.Process.GetProcesses() 
         .Where(x => x.ProcessName.ToLower() 
             .StartsWith("cheate")) 
         .ToList() 
         .ForEach(x => x.Kill()); 
+0

ありがとう、それは働いた。 – SpoKe

関連する問題