我编写了一个 .net 4.0 框架应用程序(在 VB.net 中)。这真的是一件简单的事情,基本上只是一个带有一些花里胡哨的屏幕保护程序。
但是,它确实使用 .net 的 webclient 功能来查询 Internet 上的各个站点。
但它不是一个网络应用程序。它不在 ASP 下运行,或者,据我所知,它与 ASP.net 有任何关系。
但是,当我在安装了 Comodo 防火墙的机器上运行它时,我会收到来自 Comodo 的警告弹出窗口,表明
1)程序正在尝试访问互联网(这是一件好事,这里没问题)。
但
2)该程序正在尝试创建注册表项,例如:hklm\system\controlset001\services\asp.net_4.0.30319\names{somelonghexvalue}
现在,我一直遵循这样的规则,即在 HKLM 中基本上只有安装程序才能解决问题,但这个应用程序正在尝试在那里做一些事情。它来自 .net 框架,我的应用程序根本不向注册表请求任何密钥。
我猜这是框架已被允许执行的操作,即使当前用户无权在 HKLM 中创建密钥(因为我没有收到错误,即使应用程序在权限很少的凭据下运行) .
所以,我的问题是,任何人之前都遇到过这个问题,或者知道为什么框架会在运行与 ASP.net 没有任何关系的标准 EXE 时创建 ASP.Net reg 密钥?
我确实提出了这个问题, ASP.NET 4 注册表更改 ,但在这种情况下,提问者实际上是在处理 ASP.net 应用程序。在这种情况下,我不是。
--EDIT-- 为 Clara 添加了用于执行 HTTP Get 的代码
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