2

次のコードを使用して、リモートマシン上のサービスを制御しようとしています。

// 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、ドメインコンピューターと非ドメインコンピューターで同じです。どちらもWindows764ビットを実行しています。

また、 psexecを使用することもテストしました。これは同じ症状を示します。つまり、ドメインコンピューター間では正常に機能しますが、非ドメインコンピューターを対象とする場合は機能しません。

また、ターゲットマシンでRPC over TCPを無効にして再起動することもテストしました。これは、アクセス拒否エラーの考えられる原因として説明されていますが、これは役に立たないようです。ターゲットマシンでWindowsファイアウォールを無効にすることもテストしましたが、変更はありません。

サービスのリモート構成を機能させるために有効にする必要のある設定はありますか?

4

1 に答える 1

6

これは、WindowsVista以降の新しいセキュリティ機能が原因であると思われます。デフォルトでは、Windowsは、ドメイン内で実行されていない限り、リモート接続しているユーザーに完全な管理者権限を付与しません。したがって、これを機能させるには、ユーザーアカウント制御のリモート制限をオフにする必要がありますが、もちろんこれにより、コンピューターのセキュリティも低下します。

serverfault.comに投稿された同様の問題をチェックすることを推奨してくれたHansPassantに感謝します。

于 2011-12-12T09:23:58.653 に答える