निष्पादित करने वाली प्रक्रिया आईडी/नाम को पकड़ना, मैं मूल प्रक्रिया के अंदर सीएलआर रनटाइम शुरू करने के लिए कुछ कोड का उपयोग कर रहा हूं, फिर मेरे .NET DLL को दूसरे लोड करने के लिए कॉल करें। उस प्रक्रिया के अंदर नेट निष्पादन योग्य।मेरी प्रबंधित असेंबली/होस्ट सीएलआर रनटाइम (सीएलआर रनटाइम होस्ट स्थान)
तो जैसे अन्य .NET निष्पादन मैं प्रतिबिंब का उपयोग कर रहा हूँ, लोड करने के लिए:
Assembly.Load(file).EntryPoint.Invoke(null, null);
अब, मैं एक सी ++ dll कि क्रम शुरू होता है इंजेक्षन, यह तो नेट dll जो विधानसभा का उपयोग करता है कहते हैं। स्मृति में निष्पादन योग्य एक और .NET लोड करने के लिए लोड करें और इसे निष्पादित करें।
एक बार dll मेरी नेट निष्पादन लोड करता है, बुला:
System.Reflection.Assembly.GetExecutingAssembly().Location;
या यहाँ तक कि
Process.GetCurrentProcess().MainModule.FileName;
यह, ज़ाहिर है, निष्पादन योग्य ही के स्थान देता है यहां तक कि एक के अंदर अपनी चल रहा है, हालांकि मेजबान प्रक्रिया। क्या कोई तरीका है कि मैं उस मेजबान प्रक्रिया का नाम पकड़ सकता हूं? प्रक्रिया एक्सप्लोरर इसे होस्ट प्रक्रिया के अंदर चलने के रूप में दिखाता है, इसलिए मुझे पता है कि मेरे पास यह हिस्सा सही तरीके से काम कर रहा है।
बेशक अगर मैं इन आदेशों को .NET DLL के अंदर चलाने के लिए चला गया था जो पहले लोड किया गया था तो यह उचित प्रक्रिया नाम दिखाएगा।
धन्यवाद।
संपादित करें:
मैं GetEntryAssembly()
और GetCallingAssembly()
की कोशिश की है और साथ ही।
क्षमा करें प्रति लुंडबर्ग, लेकिन मैं आपको संपादन को श्रेय नहीं दे सकता क्योंकि स्टैक ओवरव्लो उनकी पहुंच क्षमता कीड़े को ठीक नहीं करेगा। – Joshua