2009-05-05 2 views
5

द्वारा प्रक्रिया को चलाने के तरीके को कैसे बताया जाए, मेरे पास सी # में लिखी गई कुछ विंडोज सेवाएं हैं जो कि एक विशिष्ट पैरामीटर पारित होने पर कंसोल ऐप के रूप में कमांड लाइन से चलाने के समर्थन के लिए सेटअप किया गया है। बहुत अच्छा काम करता है लेकिन मुझे यह पता लगाने में सक्षम होना अच्छा लगेगा कि ऐप सेवा नियंत्रण प्रबंधक या कमांड लाइन से चलाया जा रहा है या नहीं।सेवा नियंत्रण प्रबंधक

क्या एससीएम द्वारा मेरा ऐप शुरू किया गया था तो रनटाइम पर बताने का कोई तरीका है?

उत्तर

2

Environment.UserInteractive एससीएम के तहत प्रक्रिया चल रही है तो झूठी वापसी होगी।

+3

यह तब तक अच्छी तरह से काम करता है जब तक आप एससीएम में 'डेस्कटॉप से ​​बातचीत करने की अनुमति दें' विकल्प सक्षम नहीं करते हैं। हमारी सेवाओं के लिए कोई समस्या नहीं है। धन्यवाद गार्डी! – BrettRobi

1

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

0

सी में फ़ंक्शन StartServiceCtrlDispatcher()ERROR_FAILED_SERVICE_CONTROLLER_CONNECT के साथ विफल हो जाएगा। सी में यह सबसे अच्छा तरीका है, आश्चर्य है कि क्या सी # इसमें से कोई भी खुलासा करता है?

ERROR_FAILED_SERVICE_CONTROLLER_CONNECT

अगर कार्यक्रम एक सांत्वना आवेदन के रूप में के बजाय एक सेवा के रूप में चलाया जा रहा है तो यह त्रुटि लौटाया जाता है। यदि प्रोग्राम डिबगिंग उद्देश्यों के लिए कंसोल एप्लिकेशन के रूप में चलाया जाएगा, तो इसे इस तरह से संरचित करें कि यह त्रुटि लौटाए जाने पर सेवा-विशिष्ट कोड नहीं कहा जाता है।