/ / Не може да има достъп до отдалечени Windows услуги - c #, asp.net, windows-services

Няма достъп до отдалечените услуги на Windows - c #, asp.net, windows-services

Имам уебсайт, на който потребителите могат да се представят / удостоверяват на отдалечен сървър и да контролират специфични услуги за Windows. То работи добре ако управлявам проекта локално, но когато аз публикувам проекта върху Уеб сървър като 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 stuff (За да прочетете и приемете представянето на уеб сървър):

    <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)

Не е тестван, но мисля, че трябва да се свърже сега.