Я пытаюсь контролировать службу на удаленном компьютере, используя следующий код:Remote 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
, как желаемый доступ. Целевое назначение компьютера домена с компьютера, находящегося за пределами домена, работает (с использованием комбинации user/domain/password для пользователя домена, который является локальным администратором на целевой машине). Целевое задание компьютера за пределами домена с компьютера за пределами домена не работает.
Пользователь/пароль принадлежит к группе администраторов на целевом компьютере, поэтому не должно быть проблем с правами учетной записи.
Я проверил дескриптор безопасности scmanager, используя sc -sdshow scmanager
, и он идентичен для компьютера домена и компьютера, не являющегося доменом. Оба устройства работают под управлением Windows 7 64-bit.
Я также тестировал, чтобы использовать psexec, который имеет те же симптомы, то есть отлично работает между компьютерами домена, но не при настройке компьютера, не являющегося доменом.
Я также проверил, чтобы отключить RPC через TCP на целевой машине и перезагрузить его, так как это described as a possible cause for access denied errors, но это не помогает. Я также тестировал, чтобы отключить брандмауэр Windows на целевом компьютере, но никаких изменений.
Есть ли какая-то настройка, которая должна быть включена для обеспечения удаленной настройки служб?
Возможно, вы получите лучший ответ на serverfault.com –
@HansPassant: Возможно, вы правы. Я как бы надеялся, что в своем коде я бы сделал что-то неправильно, что, скорее всего, будет замечено кем-то здесь. – villintehaspam