ERROR_BAD_IMPERSONATION_LEVEL Vista
От: tchrdav  
Дата: 25.09.07 16:37
Оценка:
Есть небольшая программа, которая работает с менеджером служб. Вот пример куска кода:

    HANDLE hToken;
    LogonUser(TEXT("Администратор"),NULL,TEXT("123"),LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hToken);

    ImpersonateLoggedOnUser(hToken);
    
    SC_HANDLE hSCMng = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);


Для работы с UAC под Windows Vista я добавил к программе манифест:

  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>


Всё работает из под пользователя в XP и в Vista с включенным UAC. Как только я отключил UAC функция OpenSCManager возвращает NULL с GetLastError() == ERROR_BAD_IMPERSONATION_LEVEL.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.