2013-09-19 6 views
0

У меня есть сайт, на котором пользователи могут олицетворять/аутентифицировать себя на удаленном сервере и управлять определенными службами Windows. Это работает отлично, если я бегу проект локально, но когда я публиковать проекта на Web Server, имеющего IIS сервера работает, это дает исключение:Не удалось получить доступ к удаленным службам Windows

Не удалось открыть Control Service Менеджер на компьютере (имя компьютера). Для этой операции могут потребоваться другие привилегии.

Моя работа:

  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 (To rea d и принять олицетворения на веб-сервере):

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

помощь?

+0

это выглядит как asp.net, а не классический – John

+0

да @ John Я исправил его ... Любая помощь по моему вопросу? –

ответ

0

Изменить

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

в

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

Не тестировался, но я думаю, что он должен подключаться прямо сейчас.

Смежные вопросы