.Exe ফাইল নাম দ্বারা কিছু প্রক্রিয়া হত্যা করুন


126

C # .NET বা C ++ এ .exe ফাইলের নামগুলি অনুসন্ধান করে আমি কীভাবে কিছু সক্রিয় প্রক্রিয়াটি মেরে ফেলতে পারি?


2
আপনার যদি আংশিক নাম দিয়ে হত্যা প্রক্রিয়াটি প্রয়োজন হয় তবে stackoverflow.com/questions/14632162/… দেখুন
আলেক্সি লেভেনকভ

উত্তর:


241

দ্রুত উত্তর:

foreach (var process in Process.GetProcessesByName("whatever"))
{
    process.Kill();
}

(প্রক্রিয়া নাম থেকে .exe ছেড়ে)


2
উপরের কোডটি ব্যতিক্রম ব্যতীত কী করা উচিত (32 বিট প্রক্রিয়াগুলি একটি 64 বিট প্রক্রিয়াটির মডিউলগুলি অ্যাক্সেস করতে পারে না)?
মণীশ

40
ছেড়ে দিন ".exe"। এমএসডিএন থেকে: "প্রক্রিয়াটির নামটি প্রক্রিয়াটির জন্য বন্ধুত্বপূর্ণ নাম, যেমন আউটলুক, যার মধ্যে।

1
@ অ্যাগেইনমি প্রসেস.কিল () কোনও প্রক্রিয়াতে একটি কিল সংকেত প্রেরণ করে, এটি যেখানেই ঘটে সেখানেই তার কার্যকারিতা থামিয়ে দেবে। এটি একটি বিঘ্নিত সংকেত থেকে পৃথক যে প্রক্রিয়াটির প্রতিক্রিয়া করার এবং / বা সিগন্যালটি থেকে পরিষ্কার করার সুযোগ থাকবে না। এই প্রক্রিয়াতে আর কার্যকর করা হবে না এবং সেই প্রক্রিয়া দ্বারা ব্যবহৃত সংস্থানসমূহের যে কোনও লক প্রকাশিত হবে। এনভায়রনমেন্ট.এক্সিট () বর্তমানে একটি সাফল্য কোড দিয়ে নিজেকে হত্যা করার জন্য বর্তমানে সম্পাদনকারী প্রক্রিয়া দ্বারা সঞ্চালিত হয়, যা পুরোপুরি নিরাপদ is প্রক্রিয়া.কিল () পরিবেশ.এক্সিট () এর মতো প্রায় নিরাপদ নয়।
jchitel

2
আমি লিনকিউ ব্যবহারের পরামর্শ দিচ্ছি: var প্রকল্পগুলি = প্রক্রিয়া.গেটপ্রেসেসেস () (যেখানে (পিআর => পি।
লিয়ান্দ্রো

2
একটি প্রক্রিয়া নির্দিষ্ট উদাহরণ হত্যার কোন বিকল্প? মানে, Contains("Spotify"))সমস্ত দৃষ্টান্তকে মেরে ফেলে Spotify আমি একটি বিশেষ উদাহরণ হত্যা করতে চাই Spotify
বনে ইসহাক কে

38

আমার সমাধানটি হ'ল সমস্ত প্রক্রিয়া তালিকাভুক্ত করার জন্য প্রক্রিয়া.গেটপ্রসেস () ব্যবহার করুন।
আমার যে প্রক্রিয়াগুলি রয়েছে তা ধারণ করতে তাদের ফিল্টার করে আমি তারপরে প্রক্রিয়া.কিল () পদ্ধতি চালাতে পারি:

var chromeDriverProcesses = Process.GetProcesses().
    Where(pr => pr.ProcessName == "chromedriver"); // without '.exe'

foreach (var process in chromeDriverProcesses)
{
     process.Kill();
}

হালনাগাদ:

সেক্ষেত্রে যদি ( এসিঙ্ক এনুম্যুয়ালস ) asyncথেকে কিছু কার্যকর সাম্প্রতিক পদ্ধতি ব্যবহার করতে চান তবে এটি পরীক্ষা করে দেখুন:C# 8

const string processName = "chromedriver"; // without '.exe'
await Process.GetProcesses()
             .Where(pr => pr.ProcessName == processName)
             .ToAsyncEnumerable()
             .ForEachAsync(p => p.Kill());

দ্রষ্টব্য: asyncপদ্ধতি ব্যবহারের অর্থ এই নয় যে কোডটি দ্রুত চলবে, তবে কমপক্ষে এটি সিপিইউর সময় নষ্ট করবে না এবং অপারেশনগুলি করার সময় অগ্রভাগের থ্রেডটিকে ঝুলানো থেকে আটকাবে। যাই হোক না কেন, আপনি কোন সংস্করণটি চাইতে পারেন তা সম্পর্কে আপনার চিন্তা করা দরকার।


আপনি সমতার পরিবর্তে
লেয়ানড্রো

10
মজার কাকতালীয় বিষয় হ'ল, আমি ক্রোমড্রাইভার হত্যার সমাধানের জন্য এই থ্রেডটিতে খুঁজছিলাম। একটি সাধারণ সমস্যা হতে হবে।
কর্ল

একই অবস্থা. এটি যদিও এটি সমাধান করে বলে মনে হচ্ছে না। প্রাথমিক কনসোল যা বরখাস্ত হয়ে যায় তা আসলে ক্রোম.এক্সির একটি উদাহরণ এবং আমি অনুমান করছি যে আপনি কোনও বিল্ড / টেস্ট এজেন্ট না থাকলে তাদের সকলকেই জোর করে
চাপিয়ে দিতে চান না

16

আপনি Process.GetProcesses()বর্তমানে চলমান প্রক্রিয়াগুলি পেতে ব্যবহার করতে পারেন , তারপরে Process.Kill()একটি প্রক্রিয়াটি মেরে ফেলতে।


6
প্রক্রিয়া.গেটপ্রেসেসস বাইনেম এটি সহজ করবে।
কনসাল্টুটা

উপরের কোডটি ব্যতিক্রম ব্যতীত কী করা উচিত (32 বিট প্রক্রিয়াগুলি একটি 64 বিট প্রক্রিয়াটির মডিউলগুলি অ্যাক্সেস করতে পারে না)?
মণীশ

0

আপনার যদি প্রক্রিয়া আইডি ( PID) থাকে তবে আপনি এই প্রক্রিয়াটিকে নিম্নলিখিত হিসাবে হত্যা করতে পারেন:

Process processToKill = Process.GetProcessById(pid);
processToKill.Kill();

0

আপনি এমএস ওয়ার্ডের একটি নির্দিষ্ট উদাহরণকে হত্যা করতে পারেন।

foreach (var process in Process.GetProcessesByName("WINWORD"))
{
    // Temp is a document which you need to kill.
    if (process.MainWindowTitle.Contains("Temp")) 
        process.Kill();
}

-2
public void EndTask(string taskname)
{
      string processName = taskname.Replace(".exe", "");

      foreach (Process process in Process.GetProcessesByName(processName))
      {
          process.Kill();
      }
}

//EndTask("notepad");

সংক্ষিপ্তসার : নামটিতে .exe রয়েছে তা বিবেচনাধীন, প্রক্রিয়াটি শেষ হবে। আপনার "প্রসেসের নাম থেকে ছাড়ুন। ছাড়ার দরকার নেই", এটি 100% কাজ করে।


1
একটি সহজ .Replace(".exe", "")উপরে ভোট উত্তর অনেক কম সংবর্ত এবং অপ্রয়োজনীয় কোড দিয়ে এই করতে হবে
AndrewK

এর সম্পূর্ণ ধারণাটি .exe সহ বা ছাড়াই পদ্ধতিটি দেখতে পাওয়া যায় যাতে লোকেরা এটি পরিচালনা করার একাধিক উপায় দেখতে পারে ... এটি অনুলিপি এবং আটকানোর জন্য নয় ....
ব্যবহারকারী 7993881
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.