2

を拒否:リモート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ファイアウォールを無効にすることもテストしましたが、変更はありません。

サービスのリモート設定を有効にするために有効にする必要がある設定はありますか?

+0

あなたはおそらくserverfault.comでより良い回答を得るでしょう。 –

+0

@HansPassant:あなたはおそらく正しいでしょう。私は自分のコードに間違ったことをしていたと思っていたのですが、これは誰かが見つけやすいでしょう。 – villintehaspam

答えて

6

これは、Windows Vista以上の新しいセキュリティ機能によって発生したようです。デフォルトでは、ドメイン内で実行されている場合を除き、Windowsはユーザーにリモート管理者権限のリモート接続を許可しません。したがって、これを動作させるには、User Account Control Remote Restrictionsをオフにする必要がありますが、もちろんこれによってコンピュータのセキュリティも低下します。

similar issues posted on serverfault.comを確認することをお勧めしていただきありがとうございます。

+0

+1ヒントありがとう! – fmuecke

+0

キーワード: 'SCマネージャーエラーを開くことに失敗しました:5メッセージ:アクセスが拒否されました。 –