सबसे आसान तरीका है WMI उपयोग करने के लिए है। विशेष रूप से Win32_ProcessStartTrace की निगरानी करें। यह Win32_Process से बेहतर है, क्योंकि यह ईवेंट का उपयोग करने के लिए सेटअप है जबकि Win32_Process को मतदान की आवश्यकता होती है जो अधिक CPU गहन है। नीचे सी # में यह कैसे करना है। सबसे पहले सुनिश्चित करें कि सिस्टम। प्रबंधन आपके प्रोजेक्ट के संदर्भ के रूप में स्थापित है।
public System.Management.ManagementEventWatcher mgmtWtch;
public Form1()
{
InitializeComponent();
mgmtWtch = new System.Management.ManagementEventWatcher("Select * From Win32_ProcessStartTrace");
mgmtWtch.EventArrived += new System.Management.EventArrivedEventHandler(mgmtWtch_EventArrived);
mgmtWtch.Start();
}
void mgmtWtch_EventArrived(object sender, System.Management.EventArrivedEventArgs e)
{
MessageBox.Show((string)e.NewEvent["ProcessName"]);
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
mgmtWtch.Stop();
}
कोड हर बार एक नई प्रक्रिया लॉन्च करने पर एक संदेशबॉक्स उत्पन्न करेगा। वहां से आप श्वेतसूची/ब्लैकलिस्ट की जांच कर सकते हैं और उचित तरीके से कार्य कर सकते हैं।
स्रोत
2009-02-15 04:04:43
दुर्भाग्य से WMI प्रक्रिया के निर्माण के 5 सेकंड बाद अधिसूचनाएं वितरित करने लगती है। रीयल-टाइम नोटिफिकेशन के लिए उपयोगी नहीं है या अल्पकालिक कार्यों के साथ कुछ भी कर रहा है। –
मुझे उसी कार्य के लिए माइक्रोसॉफ्ट की वेबसाइट पर एक उदाहरण मिला [यहां] (http://msdn.microsoft.com/en-us/library/system.management.managementeventwatcher.waitfornextevent.aspx?cs-save-lang=1&cs- lang = csharp # कोड-स्निपेट -1), लेकिन यह एक ही समस्या है। –
गह ... WMI का उपयोग करके प्रक्रिया सूची मैन्युअल रूप से मतदान करने से अधिक CPU-गहन है (यह आपकी प्रक्रिया के बजाय WMI सेवा प्रक्रिया में होता है)। इसके अलावा, यदि आपका एप्लिकेशन दुर्घटनाग्रस्त हो जाता है, तो सदस्यता डब्लूएमआई सेवा में चलती रहेगी, सीपीयू चूसने ... –