2011-05-31 16 views
6

मैं के किसी भी विंडोज सेवा के कमांड लाइन तर्कों को समझने का एक तरीका ढूंढ रहा हूं।विंडोज सेवा के कमांड लाइन तर्क कैसे प्राप्त करें?

एक गैर-सेवा प्रक्रिया के लिए, कमांड लाइन तर्क विंडोज कार्य प्रबंधक में या प्रोग्रामेटिक रूप से WMI का उपयोग करके पाया जा सकता है जैसा कि इस post में दिखाया गया है।

दुर्भाग्य से, ये दो समाधान ServiceController.Start(String[] args) विधि द्वारा शुरू की गई विंडोज सेवा के लिए काम नहीं करते हैं। उन दोनों, कमांड लाइन में केवल निष्पादन योग्य फ़ाइल पथ दिखाने भले ही कुछ बहस में पारित किए गए।

  1. कोई फर्क दोनों के बीच परिदृश्यों (सेवा वी.एस. गैर सेवा प्रक्रिया) समझा सकते हैं?
  2. विंडोज सेवा के तर्कों को जानने के लिए तरीका है?

अद्यतन:

मैं भी एक साधारण सेवा है कि बस किसी भी कमांड लाइन तर्क यह ईवेंट लॉग करने के लिए किया लॉग बनाने की कोशिश की। मैंने इसे "sc.exe start <my service> <arg1>" का उपयोग करके शुरू किया और सत्यापित किया कि <arg1> इवेंट लॉग में लिखा गया था। हालांकि, मेरे लिए कोई भी समाधान काम नहीं किया है। मैंने जो देखा वह अभी भी निष्पादन योग्य फ़ाइल का मार्ग था। मेरा ओएस संस्करण विंडोज सर्वर 2008 आर 2 एसपी 1 एक्स 64 एंटरप्राइज़ है।

उत्तर

7

सेवाओं

  • तर्क है कि इस प्रक्रिया को पारित कर दिया गया कमांड लाइन शुरू के लिए तर्कों की दो प्रकार के होते हैं। आप आसानी से प्रक्रिया एक्सप्लोरर, आदि का उपयोग कर सकते हैं ..
  • तर्क जो ServiceMain function पर भेजे गए थे। यह विन्डोज़ एपीआई है कि एक सेवा लागू करने के लिए माना जाता है। .NET समतुल्य ServiceBase.OnStart है। जब आप एससी स्टार्ट [तर्क] करते हैं तो इसका उपयोग तब किया जाता है। इसका "कमांड लाइन प्रक्रिया तर्क" से कोई लेना देना नहीं है।

दूसरे प्रकार के पैरामीटर केवल सेवा द्वारा ही ज्ञात हैं, अगर कार्यान्वयन इसका कोई उपयोग करता है जो कई सेवाओं के मामले में नहीं है। मुझे नहीं लगता कि विंडोज़ पीईबी: http://msdn.microsoft.com/en-us/library/ms684855(v=VS.85).aspx जैसे निम्न स्तर के विंडोज़ संरचनाओं को देखते हैं, यहां तक ​​कि इसके अनियंत्रित हिस्सों http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Process/PEB.html

+0

उत्तर के लिए धन्यवाद, साइमन। शायद तुम सही हो। मुझे आंतरिक मेलिंग सूची से बेहतर जवाब नहीं मिला। इसे समझने के लिए कुछ हैकी तरीका हो सकता है, लेकिन मैंने एससीएम एपीआई की जांच की और यह मदद नहीं कर रहा है। –

2

कोशिश Procexp (ProcessExplorer) आवेदन sysInternals

से यह कार्य प्रबंधक केवल की तरह है। यह सभी चल रही प्रक्रियाओं को सूचीबद्ध करता है आपकी सेवा का चयन करें और इसकी गुण देखें।

+0

प्रोसेस एक्सप्लोरर के लिए लिंक डाउनलोड करें: http://live.sysinternals.com/ procexp.exe – hackworks

+0

मैंने वास्तव में procexp.exe की कोशिश की और यह कार्य प्रबंधक द्वारा दिखाए गए एक ही चीज़ को भी दिखाया। मुझे इसका भी प्रयास करना चाहिए था। जो भी हो धन्यवाद। –

+0

मैंने कुछ सर्विसेज के लिए जांच की है प्रोसेस एक्सप्लोरर कमांड लाइन तर्क –

2
  1. सेवा प्रक्रिया सामान्य exe के रूप में शुरू नहीं हुई है। और भी, सेवा प्रक्रिया सिर्फ .dll फ़ाइल हो सकती है। देखें: http://en.wikipedia.org/wiki/Windows_service

    कई लोग विंडोज कार्य प्रबंधक में प्रक्रिया सूची में प्रकट होते हैं, अक्सर सिस्टम, स्थानीय सेवा या नेटवर्क सेवा के उपयोगकर्ता नाम के साथ, हालांकि सिस्टम उपयोगकर्ता नाम के साथ सभी प्रक्रियाएं सेवाएं नहीं हैं। शेष सेवाओं svchost.exe के माध्यम से स्मृति में लोड DLLs के रूप में चलाया।

  2. बस सर्विसबेस। ऑनस्टार्ट (स्ट्रिंग [] तर्क) विधि को ओवरराइड करें। अधिक देखें: http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.onstart.aspx

+0

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

4

आप सेवा EXE विवरण और संपादित पा सकते हैं या बस सेवा के लिए रजिस्ट्री प्रविष्टि में कमांडलाइन विकल्प देखें। आप पाएंगे कि

तहत
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services 

सेवाएं खिड़की पुनः आरंभ करने की यकीन है कि अगर आप इस रूप में यह यह लाइव पुन: पढ़ने नहीं होगा बदलने का फैसला हो सकता है।

+0

टिप के लिए धन्यवाद, लेकिन यहां तक ​​कि यह रजिस्ट्री भी Windows सेवा के कमांड लाइन तर्क नहीं दिखाती है। निकटतम कुंजी "छविपैथ" है जो सेवा के निष्पादन योग्य मार्ग, जैसे कार्य प्रबंधक, Procexp.exe, और मैंने जो प्रोग्राम लिखा है, दिखाता है। –

+1

मैंने छविपैथ के अंत में कम से कम कुछ सेवाओं को देखा है, कमांडलाइन तर्क हैं। उदाहरण के लिए: छविपैथ = "सी: \ mongo \ mongod.exe --dbperdirectory --dbpath = c: \ data \ mongo" –

+1

धन्यवाद, बिल्कुल मुझे क्या चाहिए! – timothyclifford

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