में विस्टा/विंडोज 7 में प्रोग्रामेटिक रूप से एक प्रक्रिया को मार डालें, मैं विस्टा/विंडोज 7 में प्रोग्रामेटिक रूप से एक प्रक्रिया को मारना चाहता हूं (मुझे यकीन नहीं है कि दोनों के बीच यूएसी के कार्यान्वयन में महत्वपूर्ण समस्याएं हैं) ।सी #
अभी, मेरे कोड लगता है:
if(killProcess){
System.Diagnostics.Process[] process = System.Diagnostics.Process.GetProcessesByName("MyProcessName");
// Before starting the new process make sure no other MyProcessName is running.
foreach (System.Diagnostics.Process p in process)
{
p.Kill();
}
myProcess = System.Diagnostics.Process.Start(psi);
}
मैं क्योंकि मैं सुनिश्चित करने की आवश्यकता यह करने के लिए है कि उपयोगकर्ता कार्यक्रम दुर्घटनाओं या अचानक बाहर निकल जाता है, जब अनुप्रयोग है इस माध्यमिक प्रक्रिया पुन: प्रारंभ होने अगर पुनरारंभ किया गया, या यदि उपयोगकर्ता इस माध्यमिक प्रक्रिया के लिए पैरामीटर बदलना चाहता है।
कोड XP में ठीक काम करता है, लेकिन 'एक्सेस अस्वीकार' संदेश के साथ विंडोज 7 (और मैं Vista में मानता हूं) में विफल रहता है। सर्वशक्तिमान Google ने मुझे क्या बताया है, मुझे इस समस्या को हल करने के लिए व्यवस्थापक के रूप में अपना हत्या कार्यक्रम चलाने की जरूरत है, लेकिन यह केवल कमजोर सॉस है। अन्य संभावित उत्तर LinkDemand का उपयोग करना है, लेकिन मैं LinkDemand के लिए msdn पृष्ठ को समझ नहीं पा रहा हूं क्योंकि यह प्रक्रियाओं से संबंधित है।
मैं कोड को थ्रेड में ले जा सकता हूं, लेकिन इसमें अन्य कठिनाइयों का पूरा मेजबान है जो मैं वास्तव में खोजना नहीं चाहता हूं।
को मार डालो() अन्वेषक और एक ही ऐप्लिकेशन द्वारा बनाया गया प्रक्रियाओं के लिए मुझे दोनों के लिए ठीक काम कर रहा है:
बाद में, बस इसके साथ मार डालते हैं। यहां सीमित उपयोगकर्ता में Vista चला रहा है। –
शायद यह सिर्फ विंडोज 7 बग है? क्या आप अपना कोड उत्तर में पोस्ट कर सकते हैं? क्योंकि यह सिर्फ मेरे लिए परेशान है। – mmr