2013-01-31 30 views
6

tôi đang tìm kiếm cách để làm điều đó trong C#, như thế này:C# - Giết chết một quá trình bởi một phần của nó là tên

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

Tôi đang sử dụng tuyên bố này, nhưng có những phiên bản khác nhau của chương trình , giống như cheatengine hoặc cheatengine-x86, tôi muốn đóng bất kỳ cái nào trong số này, bằng cách bắt đầu với tên 'lừa đảo', hoặc chỉ là 'lừa gạt', chỉ để tránh các phiên bản cũ hơn.

+0

Bạn đã thử gì cho đến nay? Rõ ràng, bạn đã thử mã bạn đăng, nhưng những gì tôi đã làm bên ngoài đó? – Brian

+0

Hãy lưu ý rằng tất cả người dùng cần làm để làm việc xung quanh mã như vậy là đổi tên tệp .exe của công cụ gian lận. – Brian

+0

Có cảm ơn bạn đã trả lời. Đây chỉ là một lợi ích giáo dục, thực ra tôi đang nghiên cứu để thực hiện một dự án lớn hơn. Cảm ơn tất cả các câu trả lời – SpoKe

Trả lời

3

Bạn có thể lặp qua từng tên quy trình, sau đó so khớp nó với regexp rồi sau đó giết nó nếu nó khớp.

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

giống như thế này.

Lợi thế của việc này là, bạn có thể giết bất kỳ quá trình nào bắt đầu bằng hoặc kết thúc bằng một cụm từ thông dụng cụ thể.

+0

Điều đó cần phải là '@" cheate. * "' Trong regex. –

+0

@EricAndres cảm ơn vì điều đó :-) –

+0

Cảm ơn bạn rất nhiều vì đã trả lời! – SpoKe

1

Sử dụng Process.GetProcesses() và sử dụng LINQ để lọc bộ lọc bạn muốn xóa.

+0

Cảm ơn câu trả lời! – SpoKe

+0

Lỗi đánh máy nhỏ: ở cuối của bạn nếu dấu chấm phẩy nên được thay thế bằng a) –

1

chuyển thể từ đây: 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(); 
} 

Đây chỉ là một ý tưởng thô, bạn có thể sử dụng bất kỳ phương pháp nào bạn muốn để phù hợp với quá trình này. Tôi đề nghị một cái gì đó mà bỏ qua trường hợp, nhưng tôi sẽ rất thận trọng với những mặt tích cực sai. Tôi sẽ không được hạnh phúc với chương trình của bạn nếu nó đóng một cái gì đó nó không nên.

+0

Cảm ơn bạn rất nhiều vì đã trả lời! – SpoKe

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

Cảm ơn bạn rất nhiều, nó đã hoạt động. – SpoKe

Các vấn đề liên quan