Scripting 如何从浏览器中获取USB设备列表

Scripting 如何从浏览器中获取USB设备列表,scripting,usb,browser-based,Scripting,Usb,Browser Based,什么样的基于浏览器的技术可以让我查询客户端当前连接的USB设备,特别是这些设备的名称和设备id。当然,我同意客户必须允许并确认此类活动 我不在乎它是否在底层使用WMI、直接访问或其他访问层,我只希望能够在浏览器中使用它。我非常感谢代码示例,如果有一个独立于浏览器的解决方案,我会非常高兴。你不能在浏览器上这么做(有理由)。您需要一些用户必须安装的插件 您需要为此编写一个插件。使用标准javascript不可能做到这一点 可能与ActiveX(仅IE和Windows)或Flash或浏览器扩展(每个操

什么样的基于浏览器的技术可以让我查询客户端当前连接的USB设备,特别是这些设备的名称和设备id。当然,我同意客户必须允许并确认此类活动


我不在乎它是否在底层使用WMI、直接访问或其他访问层,我只希望能够在浏览器中使用它。我非常感谢代码示例,如果有一个独立于浏览器的解决方案,我会非常高兴。

你不能在浏览器上这么做(有理由)。您需要一些用户必须安装的插件

您需要为此编写一个插件。

使用标准javascript不可能做到这一点


可能与ActiveX(仅IE和Windows)或Flash或浏览器扩展(每个操作系统)一起使用。

IE ActiveX、IE工具栏、Netscape插件包装器(对于Opera/Windows、Firefox/Windows,可能是Chrome/Windows)=>WMI。大概任何这样的东西都会被任何scrapyard级防病毒软件禁止

你可以:
a> 这样,b>使用智能卡本机支持,而不是让usb安全加密狗c>编写您自己的软件,它将在127.0.0.1启动一个Web服务器,并从您页面上的javascript(提供安装下载)访问它。

Hm,我想XBAP可能会帮到您。从那时起,就只有c和一些usblib了


EditHm,它说它在沙盒模式下运行。而且它似乎只是一个插件。我想XBAP是一个错误。

一个java小程序。你可以用

它是用java小程序实现的


所以一个解决方案肯定存在

我有点失望,因为我没有尝试至少给我一个部分的解决方案。 虽然我找不到独立于浏览器的解决方案,但我还是为Windows上的IE设计了一个解决方案,使用WMI,更准确地说是
WbemScripting.SWbemLocator
ActiveX对象。总比没有好,总比“你不能那样做”好

因此,对于其他感兴趣的人,这里是:

    function pollConnectedDevices()
    {
     var locator = new ActiveXObject("WbemScripting.SWbemLocator");
     var conn = locator.ConnectServer(".", "root\\cimv2");
     var result = conn.ExecQuery("Select * From Win32_USBHub");
     var enumer = new Enumerator(result);

     for (;!enumer.atEnd();enumer.moveNext ())
     {
       var hub = enumer.item ();

       alert(hub.Name + " " + hub.DeviceId);
     }

     setTimeout("pollConnectedDevices()",1000);
   }
   setTimeout("pollConnectedDevices()",1000);
是的,它只在Windows上的IE上。是的,它确实需要用户的许可才能进行操作。但是,是的,这是有可能的,它做了我需要它做的事情


如果其他人知道另一种方法——我在这里谈论的是代码,而不是观点,那么我仍然在为其他浏览器和操作系统寻找部分解决方案。USB设备查询是一件有趣的事情,尽管有各种各样的争论,我还是说“它是软件,应该做些什么,而不是阻止你做些什么”。

@Matti Virkkunen它是用于在网站上注册自定义USB设备的。如果用户在访问站点时插入设备,设备就会自动识别,那就太好了。+1个有趣的问题。很明显,独立于浏览器的解决方案是不可能的。然而,一些网站,如家庭银行,可能真的需要搜索银行提供的一些特殊USB设备。我不同意“浏览器独立的解决方案是不可能的”这一点。Java有很多功能,每个浏览器都有Java插件。我将检查Java是否能够做到这一点。我希望有人能提出一些不仅在WINDOWS中有效的建议。。。为java solutionFlash祈祷听起来很有希望。请展开,我不认为Flash能做到这一点。但也许有人知道不同的?让这有帮助,添加一些细节。什么具体的技术,什么模块,什么样的访问方式?我正试图避免额外的软件只用于此用途。鉴于Flash和Silverlight对浏览器和操作系统的覆盖范围,我会选择Flash或Silverlight。@Luviere:Flash和Silverlight是“安全”技术,对你来说不起作用。根据定义,你将需要一些丑陋的东西,比如ActiveX。魔鬼在细节中,而这个答案就是圣人。”不过,我很乐意为它添加一些细节,比如插件类型>语言版本>语言模块/库>示例代码。@Luviere:我的回答仅限于查询USB(或任何其他)硬件远远超出了客户端web软件的功能。您将需要特定于平台的插件,用户必须特别允许这些插件。有些用户将无法执行此操作。@Luviere:这是最好的答案,对您来说很不幸。您必须在客户端计算机上部署某种第三方代码(在web应用程序和客户端浏览器之外)。考虑到这一点,编写跨平台应用程序可能比为每种操作系统上的每种浏览器编写插件更容易。如果我是你的话,我会选择一个非常简单的.NET或Java应用程序。这是最好的答案,问题op应该勾选“答案”。我使用linux和windows。用于使用Solaris。您想要什么平台的USB prober。。。请具体说明?出于明显的安全原因,您的web浏览器不允许您访问浏览器受限资源范围之外的本地资源,如文件和开发系统。@极客Chrome OS本身就是一个浏览器;和一个操作系统。因此,我会看到安全性方面的争论变得毫无意义——这是一种需要访问系统资源的浏览器的特殊情况。我期待浏览器软件已经从沙箱中“成长”。也有尝试:完全信任XBAP、浏览器外Silverlight,但所有这些都受到其他方面的限制,不符合我的目的。