Сбой удаленного OpenSCManager с отказом в доступе - PullRequest
2 голосов
/ 08 декабря 2011

Я пытаюсь управлять службой на удаленном компьютере, используя следующий код:

// Error checking omitted for brevity
HANDLE hToken = NULL;
// user = username with no domain specification
// domain = targetmachine when targetting computer outside of domain
LogonUser(user, domain, password,
    LOGON32_LOGON_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, &hToken);

ImpersonateLoggedOnUser(hToken);

SC_HANDLE hSc = OpenSCManager(targetmachine,
                    SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS);

Это прекрасно работает при запуске с компьютера в нашем локальном домене и нацеливании на компьютер в том же домене, как при использовании учетных данных текущего зарегистрированного пользователя, так и при использовании других учетных данных.

Однако, когда я пытаюсь настроить таргетинг на машину, которая не принадлежит ни к какому домену, вызов OpenSCManager завершается неудачно с отказом в доступе, если я указываю в качестве желаемого доступа что-либо кроме SC_MANAGER_CONNECT. Ориентация на компьютер домена с компьютера, который находится за пределами домена, работает (используя комбинацию пользователя / домена / пароля для пользователя домена, который является локальным администратором на целевой машине). Ориентация на компьютер вне домена с компьютера вне домена не работает.

Пользователь / пароль предназначен для члена группы администраторов на целевом компьютере, поэтому не должно быть проблем с правами учетной записи.

Я проверил дескриптор безопасности scmanager, используя sc -sdshow scmanager, и он идентичен для компьютера домена и компьютера без домена. Оба работают под управлением Windows 7 64-bit.

Я также протестировал использовать psexec , который имеет те же симптомы, то есть отлично работает между компьютерами домена, но не при настройке компьютера без домена.

Я также протестировал отключение RPC через TCP на целевом компьютере и перезагрузил его, поскольку это описывается как возможная причина ошибок отказа в доступе , но это, похоже, не помогает. Я также протестировал отключение брандмауэра Windows на целевой машине, но без изменений.

Есть ли какая-то настройка, которую необходимо включить, чтобы работала удаленная настройка служб?

1 Ответ

6 голосов
/ 12 декабря 2011

Похоже, что это было вызвано новыми функциями безопасности из Windows Vista и выше.По умолчанию Windows не предоставляет удаленно подключающимся пользователям полные права администратора, если это не делается в домене.Поэтому, чтобы это работало, необходимо отключить Удаленный контроль учетных записей пользователей , но, конечно, это также снизит безопасность вашего компьютера.

Спасибо Хансу Пассанту за рекомендациипроверить похожие проблемы, опубликованные на serverfault.com .

...