Ошибка 1326, когда WNetAddConnection2 запускается учетной записью локальной системы
В моей среде у меня есть следующие машины в одном домене:
- hostnam1 (Windows 7 Enterprise)
- hostnam2 (Windows 7 Enterprise)
- hostnam3 (управление доменом Windows Server 2012 R2)
У меня есть служба, которая работает как локальная системная учетная запись на hostname1. Служба, в свою очередь, запускает другой процесс, который наследует привилегии локальной системы и пытается получить доступ к общей папке \\ hostname2 \ ADMIN $. И hostname1, и hostname2 находятся в одном домене.
Я могу получить доступ к общей папке без учетных данных от hostname1 или hostname3, используя проводник, но когда порожденный процесс пытается использовать функцию WNetAddConnection2 для доступа к общей папке, возвращается ошибка 1326 (ERROR_LOGON_FAILURE (0x52E)). Тот же код работает на другом компьютере ( \\hostname3\ADMIN$). Учетные данные, переданные в функцию WNetAddConnection2, являются правильными. Тот же код работает, если он запускается локальным пользователем как обычный процесс.
Как я могу настроить hostname2 для приема соединений от локальной системной учетной записи?
Используя синтаксис hostname2\username, предложенный Гарри Джонстоном, мне удалось заставить работать функцию WNetAddConnection2 (возврат 0).
Однако, когда я вызываю функцию OpenSCManager, вот так:
OpenSCManager( "hostname2" , SERVICES_ACTIVE_DATABASE , SC_MANAGER_ENUMERATE_SERVICE);
Я получаю ошибку 5 (ERROR_ACCESS_DENIED (0x5)).