13

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

我不在乎它是否在低级别使用 WMI、直接访问或某种其他类型的访问层,我想要的只是能够在浏览器中使用它。我会很感激代码示例,并且我会对独立于浏览器的解决方案感到非常满意。

4

7 回答 7

5

你不能从浏览器中做到这一点(有原因)。您需要一些用户必须安装的插件。

于 2010-09-18T19:19:00.500 回答
3

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

所以,对于其他感兴趣的人,这里是:

    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 设备查询是一件有趣的事情,尽管存在所有争论,但我说“它是软件,它应该做某事,而不是阻止你做某事”。

于 2010-10-03T13:16:19.147 回答
2

IE ActiveX、IE 工具栏、Netscape 插件包装器(适用于 Opera/Windows、Firefox/Windows,可能是 Chrome/Windows)=> WMI。据推测,任何此类东西都会被任何垃圾场级防病毒软件禁止。

您可以: a> 采用这种方式, b> 使用智能卡本机支持,而不是制作 USB 安全加密狗 c> 编写您自己的软件,它将在 127.0.0.1 启动一个网络服务器并从您页面上的 javascript 访问它(其中提供安装下载)。

于 2010-09-18T19:37:07.413 回答
1

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

于 2010-09-18T19:19:29.580 回答
1

一个 Java 小程序。您可以使用http://javax-usb.org/

并且已经使用 java applet http://forums.sun.com/thread.jspa?threadID=5371360完成了

所以肯定存在解决方案!

于 2010-10-03T07:08:34.300 回答
0

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

可能适用于 ActiveX(仅限 IE 和 Windows)或 Flash 或浏览器扩展(每个操作系统)。

于 2010-09-18T19:28:54.633 回答
0

嗯,从我的脑海中,我认为 XBAP 可能会帮助你。http://www.xbap.org/。从那时起,它只是带有一些#usblib 的c#。

编辑嗯,它说它在沙盒模式下运行。它似乎是仅限 IE 的插件。我想XBAP是一个错过。

于 2010-10-02T12:23:54.457 回答