什么基于浏览器的技术可以让我查询客户端当前连接的 USB 设备——特别是这些设备的名称和设备 ID。当然,我同意客户必须允许并确认这样的活动。
我不在乎它是否在低级别使用 WMI、直接访问或某种其他类型的访问层,我想要的只是能够在浏览器中使用它。我会很感激代码示例,并且我会对独立于浏览器的解决方案感到非常满意。
什么基于浏览器的技术可以让我查询客户端当前连接的 USB 设备——特别是这些设备的名称和设备 ID。当然,我同意客户必须允许并确认这样的活动。
我不在乎它是否在低级别使用 WMI、直接访问或某种其他类型的访问层,我想要的只是能够在浏览器中使用它。我会很感激代码示例,并且我会对独立于浏览器的解决方案感到非常满意。
你不能从浏览器中做到这一点(有原因)。您需要一些用户必须安装的插件。
我对没有尝试至少给我一个部分解决方案感到有点失望。虽然我无法找到独立于浏览器的解决方案,但我想出了一个用于 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 设备查询是一件有趣的事情,尽管存在所有争论,但我说“它是软件,它应该做某事,而不是阻止你做某事”。
IE ActiveX、IE 工具栏、Netscape 插件包装器(适用于 Opera/Windows、Firefox/Windows,可能是 Chrome/Windows)=> WMI。据推测,任何此类东西都会被任何垃圾场级防病毒软件禁止。
您可以: a> 采用这种方式, b> 使用智能卡本机支持,而不是制作 USB 安全加密狗 c> 编写您自己的软件,它将在 127.0.0.1 启动一个网络服务器并从您页面上的 javascript 访问它(其中提供安装下载)。
您需要为此编写一个插件。
一个 Java 小程序。您可以使用http://javax-usb.org/。
并且已经使用 java applet http://forums.sun.com/thread.jspa?threadID=5371360完成了
所以肯定存在解决方案!
用标准的javascript不可能做到这一点。
可能适用于 ActiveX(仅限 IE 和 Windows)或 Flash 或浏览器扩展(每个操作系统)。
嗯,从我的脑海中,我认为 XBAP 可能会帮助你。http://www.xbap.org/。从那时起,它只是带有一些#usblib 的c#。
编辑嗯,它说它在沙盒模式下运行。它似乎是仅限 IE 的插件。我想XBAP是一个错过。