2010-10-08 7 views
11

मैं उपयोगकर्ता को सेवा के लिए LogOnAsService सही कैसे प्रदान करूं?सी # विंडोज़ उपयोगकर्ता को अनुमति देने के लिए "सेवा के रूप में लॉग ऑन करें" अनुदान

मैं इस मैनुअल रूप से करना, services.msc अनुप्रयोग में मैं, सेवा करने के लिए जाने पासवर्ड (एक ही है कि वहाँ पहले था की स्थापना) को बदल सकते हैं, लागू करें क्लिक करें और मैं एक संदेश मिलता है:

खाता। \ Postgres ने लॉग ऑन सेवा के रूप में सही प्रदान किया है।

मैं कैसे कोड से ऐसा करते हैं, क्योंकि अन्यथा मैं हाथ से इस अनुमति के लिए हर बार मैं अनुप्रयोग चलाने देना है और यह एक संभावना

static void Main() 
    { 
     // irrelevant stuff 

     GrantLogonAsServiceRight("postgres"); 

     // irrelevant stuff 
    } 

    private static void GrantLogonAsServiceRight(string username) 
    { 
     using (LsaWrapper lsa = new LsaWrapper()) 
     { 
      lsa.AddPrivileges(username, "SeServiceLogonRight"); 
     } 
    } 

और नहीं है @Steve

इस लड़के विली द्वारा एलएसए मुक्ति।

उत्तर

10

Granting User Rights in C# देखें।

आपको पी/Invoke के माध्यम से एलएसए एपीआई का आह्वान करना होगा, और उस यूआरएल में wrapper class का संदर्भ है जो आपके लिए करता है। तो कोड आप के साथ अंत सरल है:

private static void GrantLogonAsServiceRight(string username) 
{ 
    using (LsaWrapper lsa = new LsaWrapper()) 
    { 
     lsa.AddPrivileges(username, "SeServiceLogonRight"); 
    } 
} 
+0

महान लगता है, लेकिन मैं Win32UnhandledException मिलती है: पैरामीटर गलत है – bevacqua

+0

@Nico - क्या की तरह अपने कोड दिखता है? –

+0

मेरे अपडेट @ कोरिगिनल पोस्ट – bevacqua

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

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