/ / दूरस्थ Windows सेवाओं - c #, asp.net, विंडोज़-सेवाओं का उपयोग नहीं कर सका

दूरस्थ विंडोज सेवाओं तक पहुंच नहीं सका - सी #, एएसपीनेट, विंडोज़-सेवाएं

मेरे पास एक वेबसाइट है जहाँ उपयोगकर्ता किसी दूरस्थ सर्वर पर स्वयं को प्रमाणित / प्रमाणित कर सकते हैं, और विशिष्ट विंडोज़ सेवाओं को नियंत्रित कर सकते हैं। यह ठीक काम करता है अगर मैं प्रोजेक्ट चला रहा हूं स्थानीय स्तर पर, लेकिन जब मैं प्रकाशित करना पर परियोजना वेब सर्वर होने IIS सर्वर चल रहा है, यह एक अपवाद देता है:

कंप्यूटर पर सेवा नियंत्रण प्रबंधक (कंप्यूटर का नाम) नहीं खोल सकता। इस ऑपरेशन के लिए अन्य विशेषाधिकारों की आवश्यकता हो सकती है।

मेरा काम:

  1. एक वर्ग जो प्रतिरूपण करता है (स्थानीय स्तर पर अच्छा काम करता है):

    public class ImpersonationUtil
    {
    public static bool Impersonate()
    {
    string logon = "ADMIN";
    string password = "PASS";
    string domain = "THEDOMAIN";
    IntPtr token = IntPtr.Zero;
    IntPtr tokenDuplicate = IntPtr.Zero;
    WindowsImpersonationContext impersonationContext = null;
    
    if (LogonUser(logon, domain, password, 2, 0, ref token) != 0)
    if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
    impersonationContext = new WindowsIdentity(tokenDuplicate).Impersonate();
    
    return (impersonationContext != null);
    }
    
    [DllImport("advapi32.dll", CharSet = CharSet.Auto)]
    public static extern int LogonUser(string lpszUserName, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
    
    [DllImport("advapi32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)]
    public extern static int DuplicateToken(IntPtr hToken, int impersonationLevel, ref IntPtr hNewToken);
    }
    
  2. सेवाओं से जुड़ने के लिए कोड:

        ServiceController controller = new ServiceController("serviceName", "machineAddress");
    var status = controller.Status;
    
  3. Web.config सामान (वेब ​​सर्वर पर प्रतिरूपण को पढ़ने और स्वीकार करने के लिए):

    <system.webServer> <validation validateIntegratedModeConfiguration="false"/> </system.webServer>

कोई मदद?

उत्तर:

जवाब के लिए 0 № 1

परिवर्तन

if (LogonUser(logon, domain, password, 2, 0, ref token) != 0)

सेवा मेरे

if (LogonUser(logon, domain, password, 9, 0, ref token) != 0)

परीक्षण नहीं किया गया है, लेकिन मुझे लगता है कि इसे अभी कनेक्ट करना चाहिए।