2010-05-07 27 views
7

से एक प्रक्रिया शुरू करने के लिए मैं एक .NET विंडोज सेवा से एक कंसोल अनुप्रयोग शुरू करने की कोशिश कर रहा हूं। यह सेवा विंडोज 2008 सर्वर पर चल रही है।एक .NET विंडोज सेवा

मैं प्रोसेस का उपयोग करता हूं। कंसोल एप्लिकेशन चलाने के लिए स्टार्ट करें और यह चलता है (मैं इसे कार्य mgr में देख सकता हूं), लेकिन मुझे प्रक्रिया आईडी वापस नहीं मिलती है और प्रक्रिया को कॉल नहीं होता है। स्टार्ट बस लटकता है। यदि मैं अपनी विंडोज 7 मशीन से एक ही सेवा चलाता हूं तो प्रक्रिया चलती है और मुझे प्रक्रिया आईडी वापस कोई समस्या नहीं मिलती है।

मैं उलझन में हूँ ..

+4

क्या आपने UseShellExecute को गलत पर सेट किया था? क्या आप इसके आउटपुट को रीडायरेक्ट कर रहे हैं? –

उत्तर

1

क्या यह संभव है प्रक्रिया आप को उत्पन्न करने कर रहे हैं उपयोगकर्ता इनपुट के लिए खिड़की स्टेशन संकेत करने के लिए प्रयास कर रहा है? इस मामले में यह लटका सकता है ...

आप किस प्रक्रिया को शुरू कर रहे हैं? क्या यह मंच/ओएस (cmd.exe की तरह) या कुछ कस्टम का हिस्सा है?

+0

यह एक कस्टम प्रक्रिया है जो एक विशिष्ट टीसीपी पोर्ट पर सुनना शुरू कर देती है। यह सुनता है लेकिन मुझे प्रक्रिया आईडी को विंडोज़ सेवा पर वापस नहीं मिल सका जिसने इसे शुरू किया। –

5

मुझे बिल्कुल यही समस्या थी। मेरे लिए कुंजी StartInfo.UseShellExecute = false सेट करना था;

0

लंबे समय बाद इस के समाधान के लिए खोज के बाद, मुझे अपनी समस्या के लिए बुद्धिमान पत्थरों को मिला।

मैंने एक नया विंडोजफॉर्म आधारित प्रोग्राम बनाया है, उसी प्रक्रिया के साथ। स्टार्ट कमांड, और फिर मानक "विंडोज चेतावनी सुरक्षा" संवाद बॉक्स दिखाता है, और यही कारण है कि यह काम करता है।

"उपयोगकर्ता पहुंच नियंत्रण" बंद करने के बाद विंडोज सेवा सही तरीके से काम करती है।