0

DeleteIpForwardEntry() の呼び出しは、Windows XP および Windows 7 では問題なく機能します。ただし、Windows Vista では、ERROR_ACCESS_DENIED で失敗します。

ドキュメントには、「ユーザーがローカル コンピューターで必要な管理者権限を持っていないか、アプリケーションが組み込みの管理者 (RunAs 管理者) として拡張シェルで実行されていない」と記載されています。

私の場合、ユーザーはローカル コンピューターの管理者であり、アプリケーションは SOFTWARE\Microsoft\Windows\CurrentVersion\Run 経由でログオン時に実行されるため、「拡張シェル」で実行するように指示することはできません。

Vista でこの「Catch 22」の状況を解決する方法はありますか?

4

1 に答える 1

1

これが Windows 7 で機能する理由がわかりません。ドキュメントは、失敗が同じであることを示しています。

Windows Vista 以降では、DeleteIpForwardEntry 関数は、管理者グループのメンバーとしてログオンしているユーザーのみが呼び出すことができます。Administrators グループのメンバーではないユーザーが DeleteIpForwardEntry を呼び出した場合、関数呼び出しは失敗し、ERROR_ACCESS_DENIED が返されます。

また、あなたの投稿は、ログオンしているユーザーが管理者であることを示しています。Windows 7 と Windows Vista のテストが異なるユーザー向けである可能性はありますか? Windows 7 ではテスト ユーザーは管理者ですが、Windows Vista マシンではテスト ユーザーはそうではありませんか?

この方法でアプリを実行することを回避する方法はありません。これを、必要に応じて IP 構成を操作するためにマシン上の対話型ログオン イベントに作用する、管理者アカウントで実行される Windows サービスとして再実装できますか?

于 2010-12-05T21:09:41.040 に答える