2010-02-08 15 views
9

मुझे एक अलग उपयोगकर्ता के रूप में प्रक्रिया चलाने में सक्षम होना चाहिए, और मुझे ऐसा करने के लिए बहुत सारे संसाधन और विभिन्न विधियां मिल गई हैं। समस्या यह है कि, मुझे एक गैर-एक्सई प्रक्रिया चलाने की आवश्यकता है, उदा। एचटीएमएल एक्सटेंशन के साथ एक पथ, या मेरे मामले में, "http://somewebserver/someApp.application"।सी # में गैर-एक्सई प्रक्रिया लॉन्च करते समय प्रतिरूपण का उपयोग करना संभव है?

एक ज्ञात समस्या है जिसमें लॉन्च प्रक्रियाओं को उनके लॉन्चर से प्रतिरूपण संदर्भों का उत्तराधिकारी नहीं मिलता है, और एक ज्ञात समस्या भी है जिसमें विभिन्न प्रमाण-पत्रों के तहत लॉन्च की गई प्रक्रिया निष्पादन योग्य फ़ाइलों (.exe) की आवश्यकता होती है।

लेकिन मैं एक अलग उपयोगकर्ता के रूप में एक .plication फ़ाइल (उदाहरण के लिए) कैसे लॉन्च करूंगा?

(मैं पी के संयोजन/CreateProcessWithLoginW लागू की सभी प्रकार की कोशिश की है, ProcessStartInfo में उपयोगकर्ता/कूटशब्द साख की स्थापना, आदि प्रत्येक का सामना करना ही सीमाओं से ऊपर उल्लेख किया है।)

उत्तर

3

जब एक गैर exe शुरू करने, यह असल में सिर्फ खोल या फ़ाइल या यूआरएल के लिए उपयोग करने के लिए exe देख रहे हैं। अभी भी एक exe शामिल है।

चूंकि खोल पहले से चल रहा है, इसलिए यह आपके प्रतिरूपण का वारिस नहीं करेगा। आप स्वयं को रजिस्ट्री में exe देख सकते हैं और फिर CreateProcessWithLoginW को कॉल कर सकते हैं, अनिवार्य रूप से सिमुलेशन कर रहा है कि शैल आपके लिए क्या कर रहा है।

उदाहरण के लिए, .txt फ़ाइल खोलने के लिए, "HKEY_CLASSES_ROOT \ .txt" देखें। वहां आप देखेंगे कि प्रकार "txtfile" है। फिर "HKEY_CLASSES_ROOT \ txtfile \ shell \ open \ command" देखें और आप देखेंगे कि शैल किस एक्सई फ़ाइल का उपयोग करेगा, जो (सामान्यतः) "% SystemRoot% \ system32 \ NOTEPAD.EXE% 1" है।

+0

धन्यवाद, यह मुझे एक कदम आगे ले गया है, हालांकि जब भी मैं कुछ प्रमाण-पत्रों के साथ प्रक्रिया को लॉन्च करने का प्रयास करता हूं, तब भी मुझे एक डरावनी 0xc0000142 त्रुटि मिल रही है, लेकिन यह एक अलग समस्या है। – vargonian

संबंधित मुद्दे