4

.net 4.0フレームワークアプリ(VB.net)を作成しました。それは本当に単純なことで、基本的にはいくつかのベルとホイッスルを備えたスクリーンセーバーです。

ただし、.netのwebclient関数を使用して、インターネット上のさまざまなサイトにクエリを実行します。

しかし、それはWebアプリケーションではありません。ASPでは動作しません。または、私が知る限り、ASP.netとは何の関係もありません。

ただし、Comodo Firewallがインストールされているマシンで実行すると、Comodoから警告ポップアップが表示されます。

1)プログラムがインターネットにアクセスしようとしています(これは良いことですが、ここでは問題ありません)。

しかし

2)プログラムが次のようなレジストリキーを作成しようとしていること:hklm \ system \ controlset001 \ services \ asp.net_4.0.30319 \ names {somelonghexvalue}

今、私は常にHKLMでいじくり回すのはインストーラーだけであるというルールに従いましたが、ここではこのアプリがそこで何かをしようとしています。そして、それは.netフレームワークから来ており、私のアプリはレジストリからキーをまったく要求していません。

現在のユーザーがHKLMでキーを作成する権限を持っていなくても、フレームワークに許可が与えられていると思います(アプリが非常に少ない権限で実行されている場合でも、エラーが発生しないため) 。

だから、私の質問は、誰かが以前にこれに遭遇したか、ASP.netとは何の関係もない標準のEXEを実行しているときにフレームワークがASP.Netregキーを作成する理由について何か考えがありますか?

私はこの質問に答えまし た。ASP.NET4レジストリが変更 されましたが、その場合の質問者は実際にはASP.netアプリケーションを扱っていました。この場合、私はそうではありません。

--EDIT--ClaraのHTTPGetの実行に使用されるコードを追加しました

Dim request As HttpWebRequest = DirectCast(WebRequest.Create(requestUri), HttpWebRequest)
Dim resultPage As String = String.Empty
Using httpWebResponse As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
    Using responseStream As Stream = httpWebResponse.GetResponseStream()
        Using reader As New StreamReader(responseStream)
            resultPage = reader.ReadToEnd()
        End Using
    End Using
End Using
4

1 に答える 1

1

理由はわかりませんが、何らかの理由で ASP.NET パフォーマンス カウンターを更新しています。

そのレジストリ キーには、ASP.NET の名前付きパイプ名が格納されます。

パイプ名。実行中のワーカー プロセスごとに 1 つ。「実行時に何が起こるか」を参照してください。このサブキーは、32 ビット バージョンのキーにのみ表示されます。

...

ランタイム中、Web アプリケーションが実行され、ワー​​カー プロセスが開始されるたびに、webengine.dll (または .Net 4.0 では webengine4.dll) が読み込まれます。このライブラリは、とりわけ、プロセス内のパフォーマンス カウンターのローカル ストレージを初期化します。また、クライアントが接続してカウンター データを読み取ることができる名前付きパイプも作成します。パイプの名前は HKLM\SYSTEM\CurrentControlSet\services\ASP.NET_x.x.xxxxx\Names レジストリ キーに格納されるため、クライアントはそれを見つけることができます。

名前付きパイプの処理は非同期です。ライブラリは、毎回ウェイクアップする CLR からの IO 完了スレッドを使用します。

参考文献:

ASP.NET の内部 - パフォーマンス カウンターの実装の詳細

于 2012-09-10T23:28:06.753 に答える