管理者以外のユーザーとしてログインしたときにAddIPAddressを使用してNICに一時IPアドレスを追加しようとしています。 AddIPAddressのMSDNドキュメントでは、管理者以外のユーザーが関数を呼び出すと、エラーとしてERROR_INVALID_HANDLEが返されます。管理者を偽装するときにAddIPAddressを使用する際の問題
私は、LogonUser()とImpersonateLoggedOnUser()へのAPI呼び出しでAddIPAddressへの呼び出しを先行しています。今私のアプリケーションは、Adminとしてログインしていると思っていますが、AddIPAddressはERROR_INVALID_HANDLEで失敗します。
MSDNも..
は、「グループポリシー、エンタープライズポリシー、およびネットワーク上の他の制限が正常に完了することから、これらの機能を妨げる可能性がありますことを述べている。アプリケーションはこれらを使用する前に必要なネットワークアクセス権を持っていることを確認してください機能。"
偽装を使用してAddIPAddressを呼び出すことはできますか?もしそうなら、どのように?私は上記のパーミッションを変更する必要があると推測していますが、私はこの領域で何を変更するのかについては迷っています。
助けていただけたら幸いです!
Additonal:プロセスを起動するために偽装された管理者へのハンドルを使用してCreateProcessAsUserを使用してnetsh(通常のユーザーとして再度ログイン)を呼び出そうとしている間も空白を描画しました。不十分な特権を示すエラーを常に返します。
実際、成功することなくそれを稼働させようとしました。 LogonUser/ImpersonateLoggedOnUserもCoInitializeSecurityも役に立ちませんでした。 GpEdit.mscに掘り起こすようなものが必要です。 – Andrey
あなたはこれを調べる時間を割いたことを感謝します。私はそれが達成するのがとても難しいはずだとはまだ信じられません! –
関連する設定は、GpEdit.msc、User configuration、Network、Network connectionsのように見えます。 (私はドイツ語版のWindows版をここから翻訳しているので、名前は多少異なるかもしれません。)実際に管理者として実行するとコードは機能しますか? –