2009-09-28 8 views
9

के रूप में चलाने के लिए सेवा सेट करना मैं वाईएक्स का उपयोग कर एक विंडोज सेवा स्थापित कर रहा हूं। मैं विंडोज उपयोगकर्ता के संदर्भ में सेवा कैसे चला सकता हूं जो इंस्टॉलर चलाता है?वाईएक्स सेवा इंस्टाल - वर्तमान विंडोज उपयोगकर्ता

+0

आप वर्तमान उपयोगकर्ता के रूप में सेवा क्यों चलाएंगे? सेवा के अधिकांश बिंदु को चलाने के लिए सक्षम होना चाहिए जब कोई उपयोगकर्ता लॉग ऑन नहीं होता है - और निष्पादन योग्य के लिए व्यवस्थापक अधिकारों की सुविधा के लिए स्थानीय सिस्टम के रूप में चलाने में सक्षम होने के लिए। मुझे यकीन है कि आपके पास एक अच्छा कारण है ... –

+2

एक कारण यह है कि आप इसे किसी विशेष उपयोगकर्ता के रूप में क्यों चलाएंगे, यह है कि इसे SQL सर्वर से कनेक्शन की आवश्यकता है और SQL सर्वर को Windows प्रमाणीकरण का उपयोग करने के लिए कॉन्फ़िगर किया गया है ... यह आसान नहीं है SQL उपयोगकर्ताओं की सूची में "स्थानीय सेवा" जोड़ने के लिए। –

उत्तर

21

आपको उस उपयोगकर्ता के लिए खाता नाम और पासवर्ड दोनों होना चाहिए, जिसे आप सेवा चलाने के लिए चाहते हैं। मैं अपने इंस्टॉलर को एक उपयोगकर्ता नाम और पासवर्ड पूछने के लिए एक कस्टम यूआई जोड़कर और फिर सेवाइंस तत्व पर खाता और पासवर्ड विशेषताओं के लिए आपूर्ति किए गए मानों का उपयोग करके इसे पूरा करने में सक्षम था।

ध्यान दें कि सेवा चलाने के लिए कभी भी खाते का उपयोग करने के लिए लॉग ऑन सेवा के रूप में विशेषाधिकार प्राप्त होना आवश्यक होगा। यह डिफ़ॉल्ट रूप से उपयोगकर्ताओं को नहीं दिया जाता है। उपयोगकर्ता को इस निजीकरण को जोड़ने के लिए मैं UtilExtension स्कीमा से उपयोगकर्ता तत्व का उपयोग करने में सक्षम था। उपयोगकर्ता को विशेषाधिकार जोड़ना केवल तभी सफल होगा यदि उपयोगकर्ता इंस्टॉलर चला रहे उपयोगकर्ता एक व्यवस्थापक है।

यहां इस्तेमाल किया गया कोड है। SERVICECREDENTIALS_USERLOGIN और SERVICECREDENTIALS_PASSWORD कस्टम UI से आबादी वाले गुण हैं।

<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> 
    <File Id="ServiceEXE" Name="YourService.exe" DiskId="1" 
     Source="path\to\YourService.exe" KeyPath="yes" /> 
    <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]" 
      LogonAsService="yes" /> 
    <ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService" 
        DisplayName="Your Service" Description="Your Service description" 
        Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]" 
        ErrorControl="normal" Interactive="no" /> 
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" /> 
</Component> 
+0

क्या आप मेरी मदद कर सकते हैं मेरे पास SQL ​​प्रमाणीकरण के लिए 2 घटक 1 और Windows प्रमाणीकरण के लिए 1 कैसे हो सकता है यानी स्थिति जोड़ने के लिए कैसे। –

+0

क्या यह कोड बिल्कुल काम करता है? LogonAsService विशेषाधिकार * को सेट करना * और * सेवा पहचान परिणामी .msi पैकेज में क्रमशः अनुसूचित नहीं लगती है। इस कारण से, स्थापना विफल हो जाती है ... या क्या मुझे कुछ याद आ रही है? –

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