4

AddressAccessDeniedExceptionプロセスにURLを登録する権限がないため、例外が発生しました。私は最初に管理者としてプログラムを実行しました:わかりました、それは機能しました。

しかし、今はアプリケーションを配布したいと思っています。すべてのユーザーが管理者でなくてもアプリケーションを実行できるようにしたいと思います。

ユーザーに自動的にアクセスを許可する方法はありますか?

私はコマンドを見ました:

netsh http add urlacl url=http://+:8000/ user=DOMAIN\UserName

私はそれを使うべきですか?はいの場合、どのように?

私がやりたいのは、管理者でなくてもアクセスを許可することです...そのように言った、それはばかげているように見えますが、...

4

1 に答える 1

7

それは不可能です。Windowsはカーネルドライバーを使用してHTTP要求を処理し、このドライバーでリスナーを開くことはACL(アクセス制御リスト)によって保護されます。アプリケーションが他のマシンからの要求をリッスンできるようにリスナーを開く場合は、ACLを渡すために管理者として実行するか、アクセス許可を持っている必要があります(= ACLにいる必要があります)。UAC(ユーザーアクセス制御)をオフにして、これらのチェックをバイパスすることもできます。

netshHTTP.sys(カーネルドライバー)のACLを設定できるツールです。選択したポートでリッスンする権限を任意のユーザーに付与できますが、これらの権限を付与するには管理者である必要があります。そうでない場合は、既に構成されている権限の権限を委任する権限が必要です。

その呼び出しをインストールパッケージに追加しnetsh、管理者としてインストールを実行する必要があります(これは多くのアプリケーションで非常に一般的です)。また、netshはWindows Vista、Windows 7、Windows Server 2008、およびWindows Server2008R2でのみ機能することに注意してください。Windows2003およびWindowsXP(少なくともSP2が必要)の場合httpcfg、OSインストールの一部ではないという別のツールが必要です(個別にインストールする必要があります)。

于 2011-10-06T10:09:55.537 に答える