を拒否:リモート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);
私たちのローカルドメイン内のコンピュータから実行しているマシンを標的にする場合これは正常に動作します現在ログオンしているユーザーの資格情報を使用する場合と、他の資格情報を使用する場合の両方で、同じドメインを使用します。
ただし、ドメインに属していないマシンをターゲットにしようとすると、SC_MANAGER_CONNECT
以外の任意のアクセスを指定すると、アクセスが拒否されてコールが失敗します。ドメイン外のコンピュータからドメインコンピュータをターゲット設定する(ターゲットコンピュータのローカル管理者であるドメインユーザーに対してユーザー/ドメイン/パスワードの組み合わせを使用)。ドメイン外のコンピュータからドメイン外のコンピュータを対象にしても機能しません。
ユーザー/パスワードは、対象コンピュータの管理者グループのメンバー用です。したがって、アカウントの権利に問題はないはずです。
sc -sdshow scmanager
を使用してscmanagerセキュリティ記述子を確認しましたが、これはドメインコンピュータとドメイン以外のコンピュータで同じです。どちらもWindows 7 64ビットを実行しています。
また、同じ症状を持つpsexecを使用してテストしました。つまり、ドメインコンピュータ間で正常に動作しますが、ドメイン以外のコンピュータを対象とすると動作しません。
ターゲットマシンでRPC over TCPを無効にして再起動することもテストしました。これはdescribed as a possible cause for access denied errorsですが、これは役立たないようです。また、ターゲットマシン上でWindowsファイアウォールを無効にすることもテストしましたが、変更はありません。
サービスのリモート設定を有効にするために有効にする必要がある設定はありますか?
あなたはおそらくserverfault.comでより良い回答を得るでしょう。 –
@HansPassant:あなたはおそらく正しいでしょう。私は自分のコードに間違ったことをしていたと思っていたのですが、これは誰かが見つけやすいでしょう。 – villintehaspam