我们有一个高级网页(ASP.NET,C#)和一个需要安装在客户端计算机上的应用程序,以便最大限度地利用网页。这个应用程序是一个托盘应用程序,主要有两个任务。检测when服务器上发生某些事件的时间(例如,邀请参加会议或通知即将召开的会议)。trayapp的另一个任务是使用自定义协议(trayapp://)执行一些对服务器的ajax回调。
我们遇到的一个问题是如何确定应用程序是否安装在本地计算机上。现在用户必须勾选一个复选框,以通知网站应用程序已安装,并且可以安全地调用trayapp:// url调用。
是否有任何方法,例如通过JavaScript或类似的方法来检测我们的应用程序是否安装在本地计算机上?
该检查需要适用于IE、FF和Opera浏览器。
发布于 2008-11-14 23:18:42
如果你想在浏览器中使用javascript进行检测,你可以使用集合"navigator.plugins“。它可以在Firefox、Opera和Chrome上运行,但不幸的是不能在IE上运行。
更新:在FF、Opera和Chrome中,你可以像这样轻松地测试它:
if (navigator.plugins["Adobe Acrobat"]) {
// do some stuff if it is installed
} else {
// do some other stuff if its not installed
}更新#2:如果它是IE中的一个ActiveX对象,你可以使用下面这样的东西来测试它是否存在:
function getActiveXObject(name){
try{
return new ActiveXObject(name);
}
catch(err){
return undefined;
}
};IE的另一种方法类似于JohnFx的建议(我发现它是here的,还没有测试过):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\Internet
Settings\User Agent\Post Platform发布于 2008-11-14 23:14:48
安装客户端应用程序时,您可以修改浏览器配置,以便在HTTP请求中包含另一个请求头,然后让服务器代码查找该头,例如,使用以下注册表项将其作为受支持的mime类型(适用于Internet explorer)
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\
Internet Settings\Accepted Documents我不确定Opera和FF是否使用相同的键,但它们可能有类似的配置选项,但这至少应该让你走上正确的道路。
发布于 2014-07-06 21:07:31
“一些”提到的方法非常常见,但也有其他方法,例如,如果应用程序在本地侦听端口,则可以从浏览器检测到该方法,这对于安全解决方案非常常见,因为有某种类型的本地代理来过滤流量。实际上,我之前制作了一个关于使用这种技术检测avast防病毒的视频,你可以在这里观看:
https://stackoverflow.com/questions/291704
复制相似问题