मैं इस मुद्दे को काफी व्यापक रूप से खोज रहा हूं और मुझे कोई जवाब नहीं मिल रहा है।सी # केवल एक ReadProcessMemory या WriteProcessMemory अनुरोध का हिस्सा प्रक्रिया के दौरान पूरा किया गया था। Kill()
मुझे पता है कि Only part of a ReadProcessMemory or WriteProcessMemory request was completed
अपवाद फेंक दिया जाता है जब 32-बिट प्रक्रिया 64-बिट प्रक्रिया तक पहुंचने का प्रयास करती है और 32-बिट प्रक्रिया को संशोधित करने के लिए 64-बिट के लिए समान होती है।
उस समस्या का समाधान प्लेटफ़ॉर्म लक्ष्य को 'किसी भी CPU' में बदलना है। मैंने कोशिश की है और दुर्भाग्य से यह मेरी समस्या का समाधान नहीं करता है।
कोड का अगला ब्लॉक अपवाद फेंकता रहता है। प्रोग्राम जो इस कोड को चलाता है, दूरस्थ कंप्यूटर पर अनुप्रयोग खोलने के लिए उपयोग किया जाता है और प्रोग्राम की खुली सभी प्रक्रियाओं की एक सूची रखता है ताकि मुझे सभी प्रक्रियाओं के माध्यम से लूप न करना पड़े।
Process processToRemove = null;
lock (_runningProcesses)
{
foreach (Process p in _runningProcesses)
{
foreach (ProcessModule module in p.Modules)
{
string[] strs = text.Split('\\');
if (module.ModuleName.Equals(strs[strs.Length - 1]))
{
processToRemove = p;
break;
}
}
if (processToRemove != null)
{
break;
}
}
if (processToRemove != null)
{
processToRemove.Kill();
_runningProcesses.Remove(processToRemove);
}
}
ये प्रक्रियाएं 32-बिट और 64-बिट, मिश्रित हो सकती हैं।
क्या ऐसा कुछ भी है जो मैं कर रहा हूं कि मुझे नहीं करना चाहिए, या क्या यह सब करने का एक बेहतर तरीका है?
मुझे आपका पूरा कार्यक्रम नहीं पता है, लेकिन चूंकि आपको रिमोट मारने का अधिकार लगता है, क्या आपने PowerShell का उपयोग करने पर विचार किया है और रिमोट इसे मार डाला है? यदि आवश्यक हो तो आप सी # से cmdlets भी कॉल कर सकते हैं। http://4sysops.com/archives/query-and-kill-a-process-on-a-remote-computer-using-powershell-and-wmi/ – Vincent
@ विन्सेंट: यह वही तरीका है जो यह काम करता है। मेरे पास एक "सर्वर" प्रोग्राम है जो मैं कंप्यूटर पर चलाता हूं और उसी कमरे में सभी कंप्यूटर इस सर्वर कंप्यूटर के "क्लाइंट" हैं। सभी क्लाइंट एक क्लाइंट प्रोग्राम चलाते हैं जो टीसीपी संदेशों को स्वीकार करता है। एक प्रोग्राम को बंद करने के लिए, मैं क्लाइंट को एक निश्चित प्रक्रिया को बंद करने के लिए एक टीसीपी संदेश भेजता हूं और ग्राहक अपने स्वयं के कार्यक्रमों की हत्या को संभालता है। –
यह काम कर सकता है। हालांकि मैं निश्चित रूप से कुछ नहीं बता सकता। लेकिन जिस तरह से विंडोज़ प्रक्रियाओं को मारता है वह सी # से Wmi तक अलग हो सकता है। – Vincent