2009-08-28 21 views
0

ImpersonateNamedPipeClientを使用して)クライアントを偽装するサービスで、私はCreateProcessAsUserを呼び出そうとします。 実行可能ファイル名は、3番目のコンピュータ(サーバーまたはパイプに接続されているクライアントのいずれも)にないUNCパスです。偽装トークンからのネットワークログオン

コールはエラーコード5(ACCES DENIED)で失敗します。私はサーバがImpersonateNamedPipeClientを呼び出す前にWNetAddConnection2を使用して(偽装されるトークンのコンテキストで)クライアントからクライアントを認証しようとしましたが、同じエラーが発生します。

実行可能ファイルにアクセスするために、偽装されたアカウントを認証するにはどうすればよいですか(サーバーに偽装トークンしかないという事実を考慮して)

答えて

0

私のWin32はかなり錆びているので、暗いところで撮影されているかもしれませんが、CreateProcessの代わりにCreateProcessAsUserの機能を試してみましたか? MSDN Documentationによれば、制限付きトークンで動作します。私が正しくリコールすれば、偽装トークンで十分です。

希望に役立ちます。

+0

私は間違いを犯しました。もちろん、CreateProcessAsUserを使用します。要点は、ImpersonateNamedPipeClientからのトークンがネットワークにアクセスできないということです。 (私は私の質問を編集しました) –

+0

偽装されているユーザーはネットワークアクセスが必要です。また、3台目のマシンにアクセス権が必要です。あなたの場合、両方とも正しいのですか? –

0

CreateProcessAsUser()には、偽装トークンではなくプライマリトークンが必要です。 DuplicateTokenEx()を使用して、偽装されたトークンからプライマリトークンを取得できます。 CreateProcessAsUser()のドキュメントには、それほど多くのことが書かれています。

+0

ご協力ありがとうございます。私はすでにDuplicateTokenExを使用しています。私は偽装レベルをSecurityImpersonationからSecurityDelegationに変更しましたが、実行可能ファイルがリモートの場合でも同じエラーが表示されます。 –

関連する問題