从asp.net检测客户端机器上是否安装了应用程序?

时间:2012-01-07 10:26:50

标签: asp.net .net

我在asp.net应用程序中工作。从asp.net网页,用户可以下载我们的特殊文件,然后运行它。该文件将与先前安装在客户端计算机上的应用程序相关联。

当然,如果应用程序未安装在本地计算机上,则无法运行该文件。

我想知道是否可以检测我们的应用程序是否已安装在本地计算机上。如果没有弹出窗口或消息显示在机器上并要求他们先安装我们的软件。

像Flash一样,如果本地计算机上没有安装Flash,浏览器可以检测到。它会要求用户安装下载Flash并进行安装。

提前致谢。

3 个答案:

答案 0 :(得分:2)

  

我想知道我们的申请是否有可能   是否安装在本地机器上。

不用多想,出于明显的安全原因,这是不可能的。

Flash和Silverlight之类的工作方式是它们是浏览器插件。所以当浏览器遇到<object><embed>标签来嵌入此插件时,它知道它是否已安装,并使用指定的备用内容。它已经是HTML的一部分。查看示例Silverlight应用程序的嵌入示例:

<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="ClientBin/Foo.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="white" />
      <param name="minRuntimeVersion" value="3.0.40818.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object>
    <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>

请参阅下载浏览器所显示的插件的链接,以防它不理解application/x-silverlight-2类型(如果未安装,则显然属于这种情况)。

但是检测某些程序是否从Web应用程序安装在客户端计算机上是不可能的。那只是一个巨大的安全漏洞。

所以请轻轻地询问您的用户=&gt;向他们解释,为了使用您的网站,他们需要在自己的计算机上下载,安装和运行某些软件,风险自负。

答案 1 :(得分:2)

如果您的应用对浏览器的User-AgentAccept HTTP标头进行了更改,那么您的网络应用可以检测您的应用是否在本地安装的一种方式。

您为每个浏览器执行此操作的方式不同。对于IE,您可以通过更改注册表设置来完成此操作。

这是一个脆弱的机制,但非常具有侵略性,我不推荐它。

或者,您可以在应用中安装小型浏览器插件,并使用HTML <object>标记查看是否存在。

答案 2 :(得分:0)

您需要使用ActiveX控件或浏览器插件(Firefox,Chrome等)来检查客户端是否已安装。