আমি কীভাবে নির্ধারণ করব উইন্ডোজের কোনও প্রক্রিয়ার "পিতামাতা নেই"?


6

প্রক্রিয়াটির কোনও পিতা-মাতা নেই কিনা তা নির্ধারণ করার জন্য আমি উইন্ডোজ কমান্ড লাইনের মাধ্যমে কোনও উপায় বের করার চেষ্টা করছি।

আমি জানি যে সমস্ত প্রক্রিয়াগুলির প্রযুক্তিগতভাবে কোনও পিতা-মাতা থাকে যা ওএস বা যে কোনও কিছু দ্বারা নিয়ন্ত্রিত হয়, তবে সরলতার জন্য এটির "কোনও পিতামাতা নেই"। উদাহরণস্বরূপ, আপনি যদি একটি এক্সপ্লোরার উইন্ডো খোলেন, তবে এটি প্রক্রিয়া গাছের শীর্ষে প্রসেস এক্সপ্লোরারে প্রদর্শিত হবে।

আমি যখন প্রক্রিয়াটিতে একটি ডাব্লুমিক কোয়েরি করি তবে আমি 'প্যারেন্টপ্রসেসপিআইডি' এর জন্য একটি পিআইডি পাই। যখন আমি চেষ্টা করি এবং টাসলিস্ট ব্যবহার করে সেই পিআইডি সন্ধান করি তখন এটি বলে যে পিআইডি স্বীকৃত নয়। আমি এর মতো বেশ কয়েকটি প্রক্রিয়া দেখেছি এবং তাদের কাছে বিভিন্ন প্যারেন্ট প্রসেস রয়েছে যা টাস্কলিস্টের মাধ্যমে সমস্ত অ্যাক্সেসযোগ্য। যদি কোনও প্রক্রিয়াটির কোনও প্যারেন্ট প্রক্রিয়া থাকে যা টাসলিস্টের মাধ্যমে অ্যাক্সেসযোগ্য হয়, তার মানে কি এটির প্রক্রিয়া গাছের "শীর্ষে" রয়েছে?

আমি জিজ্ঞাসা করছি কারণ আমি নিজে চালিত একটি প্রোগ্রাম এবং অন্য প্রোগ্রামের শিশু প্রক্রিয়া হিসাবে চলমান একই প্রোগ্রামের মধ্যে পার্থক্য করার চেষ্টা করছি।

উদাহরণ স্বরূপ:

ধরা যাক আমি উইন্ডোজ স্টার্ট মেনুতে গিয়ে একটি এক্সপ্লোরার উইন্ডো খুলি। তারপর, আমি একটি cmd কমান্ড উইন্ডো এবং টাইপ খুলুন: explorer.exe। আমার এখন দুটি এক্সপ্লোরার এক্সেক্স প্রক্রিয়া রয়েছে। একটি হল cmd.exe এর শিশু প্রক্রিয়া এবং একটি হ'ল একা একা থাকা প্রক্রিয়া। আমি একটি ডাব্লুমিক বা টাসিস্টলিস্ট ক্যোয়ারির মাধ্যমে, সমস্ত explorer.exeপ্রক্রিয়াগুলি একা একা একা করার জন্য সক্ষম হতে চাই । সুতরাং, আমি উইন্ডোজ স্টার্ট মেনু দিয়ে যে প্রক্রিয়াটি শুরু করেছি তা ফিরে আসা উচিত এবং প্রক্রিয়াটি cmd.exe দ্বারা শুরু করা উচিত নয়।

আমি এই সমস্যাটিতে চলে আসছি যে প্রতিটি প্রক্রিয়াটির একটি প্যারেন্ট প্রসেস আইডি থাকে এবং আমি কোনও প্রোগ্রাম থেকে আসা পিতামাতার প্রক্রিয়া এবং ওএস সম্পর্কিত কোনও প্রক্রিয়া থেকে আসা পিতামাতার প্রক্রিয়াটির মধ্যে কীভাবে পার্থক্য করতে হয় তা আমি জানি না। আমি যদি নিম্নলিখিতগুলি করতে পারি তবে তা দুর্দান্ত হবে:

pseudocode:

wmic process where name=explorer.exe get parentProcessID,processID
tasklist /fi "PID eq <parentProcessID>" 2>&1> log.txt
if(log.txt contains "INFO: No tasks are running which match the specified criteria."){
    // Parent PID is not recognized by tasklist
    // Do something
}

তবে আমার যুক্তি সঠিক কিনা তা সম্পর্কে আমি নিশ্চিত নই।

উত্তর:


3

কমান্ড লাইন থেকে এটি কীভাবে করা যায় তা সম্পর্কে আমি নিশ্চিত নই, তবে পাওয়ারশেল থেকে ওএস সম্পর্কিত প্রক্রিয়াগুলির ফিল্টারিংয়ের জন্য আমি এটি লিখেছিলাম। সম্ভবত এটি আপনাকে ধারণা দেবে। এটি পরিষেবা, সিস্টেম এবং নাল দ্বারা মালিকানাধীন আইটেমগুলি এড়িয়ে যায়।

gwmi win32_process |select ProcessID,ParentProcessID,Name, @{l="Username";e={$_.getowner().user}}|where {$_.Username -ne "SYSTEM"} | where {$_.Username -ne "LOCAL SERVICE"} | where {$_.Username -ne "NETWORK SERVICE"} | where {$_.Username -ne $null} |Sort-Object ProcessID | ft -AutoSize
#

আউটপুট

    ProcessID ParentProcessID Name            Username
    --------- --------------- ----            --------
     2136     3460            notepad.exe     KNUCKLE-DRAGGER
     2504     3460            firefox.exe     KNUCKLE-DRAGGER
     2792      700            dllhost.exe     KNUCKLE-DRAGGER
     2816     4232            conhost.exe     KNUCKLE-DRAGGER
     2916     3460            powershell.exe  KNUCKLE-DRAGGER
     3128     3460            notepad.exe     KNUCKLE-DRAGGER
     3180      576            taskhost.exe    KNUCKLE-DRAGGER
     3196     4308            vmware-tray.exe KNUCKLE-DRAGGER
     3460     4392            explorer.exe    KNUCKLE-DRAGGER
     3644     4636            vmware-vmx.exe  KNUCKLE-DRAGGER
     3696     3460            mplayerc.exe    KNUCKLE-DRAGGER
     4636     3196            vmware.exe      KNUCKLE-DRAGGER
     4828     3460            notepad.exe     KNUCKLE-DRAGGER

এবং আপনি তালিকার 3460 মালিকানা রয়েছে সবচেয়ে আইটেম দেখতে পারেন যা আমার EXPLORER.EXE হয়
গিঁট-Dragger

আমার উদাহরণে অনুমান, সমস্ত প্রক্রিয়াগুলি সিস্টেম, স্থানীয় পরিষেবা বা নেটওয়ার্ক পরিষেবাদির মালিকানাযুক্ত হবে না। তবে, যে সমস্ত প্রক্রিয়াগুলি আমি দেখার চেষ্টা করছি সেগুলি আসলে স্থানীয় সিস্টেম ব্যবহারকারীর অধীনে চলমান একটি উইন্ডোজ পরিষেবা দ্বারা তৈরি করা হয়েছিল। সুতরাং পৃথককরণের জন্য স্থানীয় সিস্টেম ব্যবহারকারীর অধীনে 0 ধরণের প্রক্রিয়াকরণের জন্য উভয় প্রকারের জন্য কাজ করতে হবে।
user972276

আপনাকে দেখতে হবে কোন প্রসেসের একটি প্যারেন্ট প্রসেস আইডি রয়েছে যা বিদ্যমান নেই। অর্থাত্, যদি explorer.exeএর প্যারেন্ট প্রসেসটি পিপিআইডি হিসাবে তালিকাভুক্ত হয় তবে সিস্টেমে 5072কোনও পিআইডি 5072চালানোর কোনও প্রক্রিয়া নেই , তবে আপনার একটি অপ্রতিরোধ্য প্রক্রিয়া রয়েছে।
দারথ অ্যান্ড্রয়েড

সুতরাং প্যারেন্ট আইডির ফিল্টারিংয়ের একটি জিডাব্লুএমআই তৈরি করুন কেবলমাত্র যে প্রক্রিয়াগুলি আপনি যাচাই করতে চান, তারপরে সমস্ত পিডের দ্বিতীয় জিডাব্লুএমআই চালান এবং প্রথম ক্যোয়ারী থেকে প্যারেন্ট আইডির তালিকায় ফোর্যাচ করুন। যেগুলির মিল নেই তারা হ'ল লাভ।
নাকল-ড্রাগার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.