Сбой удаленного OpenSCManager с отказом в доступе
Я пытаюсь управлять службой на удаленной машине, используя следующий код:
// 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 ответ
Похоже, что это было вызвано новыми функциями безопасности из Windows Vista и выше. По умолчанию Windows не предоставляет удаленно подключающимся пользователям полные права администратора, если это не делается в домене. Поэтому, чтобы это работало, необходимо отключить удаленные ограничения контроля учетных записей, но, конечно, это также снизит безопасность вашего компьютера.
Благодарим Ханса Пассанта за рекомендацию проверить похожие проблемы, размещенные на serverfault.com.