2009-12-16 17 views
10

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

सेवा नियंत्रक कक्षा आपको किसी प्रमाणीकरण पैरामीटर निर्दिष्ट करने की अनुमति भी नहीं देती है। क्या यह सही है? क्या व्यवस्थापक के बजाय उपयोगकर्ता को निजीकरण का एक विशिष्ट सेट है, क्योंकि मैं सेवा मशीन पर स्थानीय व्यवस्थापक के रूप में हमारे क्लस्टर में सभी वेबसर्वर उपयोगकर्ताओं को जोड़ने में अनिच्छुक हूं?

उत्तर

5

आपको वर्तमान थ्रेड के लिए अस्थायी रूप से एक व्यवस्थापक उपयोगकर्ता का प्रतिरूपण करना होगा और फिर वापस लौटना होगा। एमएसडीएन में WindowsIdentity.Impersonate() देखें।

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

+0

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

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