Ich versuche, einen Dienst auf einem entfernten Rechner mit folgendem Code zu steuern:
// 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);
Dies funktioniert problemlos, wenn es von einem Computer in unserer lokalen Domäne aus ausgeführt wird und auf einen Computer in derselben Domäne abzielt, sowohl bei Verwendung der Anmeldeinformationen des derzeit angemeldeten Benutzers als auch bei Verwendung anderer Anmeldeinformationen.
Wenn ich jedoch versuche, einen Computer anzuvisieren, der keiner Domäne angehört, wird die OpenSCManager
Aufruf schlägt mit Zugriff verweigert fehl, wenn ich etwas anderes als SC_MANAGER_CONNECT
als den gewünschten Zugang. Das Anvisieren eines Domänencomputers von einem Computer außerhalb der Domäne aus funktioniert (unter Verwendung einer Benutzer/Domäne/Kennwort-Kombination für einen Domänenbenutzer, der auf dem Zielcomputer ein lokaler Administrator ist). Das Anvisieren eines Computers außerhalb der Domäne von einem Computer außerhalb der Domäne aus funktioniert nicht.
Der Benutzer/das Kennwort ist für ein Mitglied der Administratorgruppe auf dem Zielcomputer, so dass es keine Probleme mit den Kontorechten geben sollte.
Ich habe den scmanager-Sicherheitsdeskriptor überprüft, indem ich sc -sdshow scmanager
und sie ist für den Domänencomputer und den Nicht-Domänencomputer identisch. Auf beiden läuft Windows 7 64-Bit.
Ich habe auch die Verwendung von psexec die die gleichen Symptome aufweist, d. h. sie funktioniert problemlos zwischen Domänencomputern, aber nicht, wenn sie auf Nicht-Domänencomputer abzielt.
Ich habe auch getestet, RPC über TCP auf dem Zielcomputer zu deaktivieren und ihn neu zu starten, da dies eine als mögliche Ursache für Fehler bei verweigertem Zugriff beschrieben aber das scheint nicht zu helfen. Ich habe auch versucht, die Windows-Firewall auf dem Zielcomputer zu deaktivieren, aber das hat nichts geändert.
Gibt es eine Einstellung, die aktiviert werden muss, damit die Fernkonfiguration von Diensten funktioniert?