用vbs确定计算机是否有 USB 2.0 端口的代码

问:
您好,脚本专家!有没有办法使用脚本来确定计算机是否有 USB 2.0 端口?
-- RD
答:
您好,RD。您熟悉电影疯狂星期五 (Freaky Friday) 吗,电影中母亲和女儿交换了身体(及角色)?嗯,我们的这个问题中有点类似疯狂星期五的东西。毕竟,在本专栏中本来应该由“脚本专家”来帮助您。但是,此问题实际上却帮助了一位“脚本专家”。他原来一直在尝试测试 USB 设备(未成功),而且几乎已经把这项工作视为毫无意义。但是当阅读到您的问题时,他心中暗想,“哎呀,对啊:USB 1.1 和 USB 2.0”。他在 USB 1.1 插槽中一尝试测试该设备(对照 2.0 插槽),问题马上就解决了。
嗨,没有人说过这个特别的“脚本专家”是天才。(编辑附注:我为此证明。)
我们欠您一份情,RD;我们该如何报答您呢?好主意:也许我们可以从回答您的问题开始。好的,这里有一个脚本,它很可能返回计算机上 USB 2.0 端口的数量。让我们先看代码,然后再解释我们说它“很可能”返回端口数量的原因:


代码如下:

strComputer = "." 
i = 0 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colControllers = objWMIService.ExecQuery _ 
    ("Select * From Win32_USBController") 
For Each objController in colControllers 
    If Instr(objController.Name, "Enhanced") Then 
        i = i + 1 
    End If 
Next 
Wscript.Echo "No. of USB 2.0 Ports: " & i

这个脚本首先为两个变量进行了赋值。为变量 strComputer 赋予了点 (.),点(WMI 表示法)代表本地计算机。同时,为计数器变量 i 赋值 0;我们将使用此变量来作为所有找到的 USB 2.0 端口的活动计数器。
连接到 WMI 服务后,我们使用此查询返回所有 Win32_USBController 类的实例:
Set colControllers = objWMIService.ExecQuery _
    ("Select * From Win32_USBController")
在此我们设置一个 For Each 循环来遍历集合(集合当然是代表计算机上的所有 USB 端口)中的每一项。遗憾的是,Win32_USBController 类不包含可告诉我们 USB 版本的属性(如 Version),实际上,并没有明确的方法来查看 USB 插槽的属性并了解它是 1.1 版本还是 2.0 版本。不过,大部分 2.0 端口均在名称中的某个位置包含 Enhanced 一词。我们不能保证所有端口均如此,这就是我们说此脚本很可能返回计算机上 USB 2.0 端口数量的原因。但是,在办公室里的随机测试中,此方法似乎行得通;发现 2.0 插槽时它总是有类似下面的名称:
VIA USB Enhanced Host Controller
那么,这对我们有何帮助呢?嗯,这表示我们可以使用 InStr 函数来查看 Enhanced 一词是否出现在每个插槽的 Name 中:
If Instr(objController.Name, "Enhanced") Then
如果 InStr 返回值 True(从技术角度来说,如果它返回比 0 大的值),则表示在名称中某处发现了 Enhanced 一词。在这种情况下,我们会将 i 值加 1:
i = i + 1
如果 InStr 返回 0,表示找不到Enhanced 一词怎么办?嗯,在这种情况下,我们就进入下一个循环并尝试集合中的下一项,i 值保持不变。
我们继续进行查询,每次找到名称中有 Enhanced 的 USB 插槽即增加 i 值。当全部完成后,我们只需回显 i 值,它将告诉我们计算机上 USB 2.0 端口的数量。
它并不一定是万无一失的方法,但好像还管用。而且,您知道,这和您为我们做事还不一样。
哦,对了;我们忘记了一件事。嗯,您或许喜欢巧克力?

(0)

相关推荐

  • 用vbs确定计算机是否有 USB 2.0 端口的代码

    问: 您好,脚本专家!有没有办法使用脚本来确定计算机是否有 USB 2.0 端口? -- RD 答: 您好,RD.您熟悉电影疯狂星期五 (Freaky Friday) 吗,电影中母亲和女儿交换了身体(及角色)?嗯,我们的这个问题中有点类似疯狂星期五的东西.毕竟,在本专栏中本来应该由"脚本专家"来帮助您.但是,此问题实际上却帮助了一位"脚本专家".他原来一直在尝试测试 USB 设备(未成功),而且几乎已经把这项工作视为毫无意义.但是当阅读到您的问题时,他心中暗想,&q

  • 用vbs得到计算机的 IP 地址

    描述返回安装在计算机中的每个支持 IP 的网络适配器的 IP 地址. 脚本代码 复制代码 代码如下: strComputer = "."  Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  Set IPConfigSet = objWMIService.ExecQuery _      ("Select IPAddres

  • bat生成vbs通过注册表禁用或启用USB端口的代码

    当然,你也可以完全使用BAT操作注册表来完成修改注册表的键值的目的,具体方式留以后完善,如果你有好的想法,记得告诉我哦! USB_Disable.bat文件代码: 复制代码 代码如下: @echo off echo On Error Resume next>USB_Disable.vbs echo Dim WshShell>>USB_Disable.vbs echo Set WshShell = WScript.CreateObject("WScript.Shell"

  • vbs实现计算机重启

    Dim return Set R = CreateObject("WScript.Shell") return=MsgBox ("你确定要重起计算机吗?",vbokcancel+vbexclamation,"注意!") If return=vbok Then R.run("Shutdown.exe -r -t 0") End if

  • 一个用vbs查找硬盘所有分区中的指定程序的代码

    On Error Resume Next '忽略所有错误 Dim filename '声明变量 Dim re Set re=New RegExp '建立正则表达式对象实例 re.Pattern="^([a-z]|[A-Z])+\:\\\w+\.vbs$" If re.Test(WScript.ScriptFullName)=False Then  MsgBox "请在磁盘根目录下运行本程序,否则搜索结果可能会不正确!",,"MessageBox"

  • 用vbs来探测端口的代码 不用注册winsock

    复制代码 代码如下: On Error Resume Next if (lcase(right(wscript.fullname,11))="wscript.exe") then wscript.echo "Execute it under the cmd.exe Plz! Thx." wscript.quit end If if Wscript.Arguments.count=0 Then usage() wscript.quit End If Set Arg=W

  • 用VBS修改(设置)系统时间和日期的代码

    那天跟别人聊到 Y2K38 问题,于是想到一个恶作剧:用 VBS 把系统的时间修改到2038年1月19日3时14分07秒之后,这样某些依赖于 Unix 时间戳的程序就会出问题.那么怎样用 VBS 修改系统的时间呢? 最简单也是最没有技术含量的方法就是调用 cmd 的 date 和 time 命令: 复制代码 代码如下: 'Author: Demon 'Website: http://demon.tw 'Date : 2011/4/27 Dim WshShell Set WshShell = Cr

  • VBS合并一个文件夹里的TXT的实现代码

    复制代码 代码如下: Const ForReading = 1 'VBS的这句不能少. dim xint,xinlu,jiuw dim objfso,objoutputfile,f,fx dim objTextFile,strtext Set objFSO = CreateObject("Scripting.FileSystemObject") '创建FSO对象 jiuw = inputbox("请输入源文件夹所在的路径(含文件夹名称)","请输入多个TX

  • VBS 提取狗狗影视中的ED2K连接的实现代码

    打开狗狗影视,搜索自己需要的资源,资源类型选:电驴,如下图: 我找到一个 19.75GB 的: 点开它,出现如下图的界面,可以看到正常下载地址已被屏蔽.我们复制地址栏中的网址,备用. 打开从本站下载的 VBS 脚本,复制该网址到输入框,然后确定,稍过一会,会出现提示完成的消息框,这个时间的长短由你的网速决定! 最后,我们得到最终的 ED2K 连接地址,全部保存在当前目录下的 ed2k.txt 文件中: 还等什么?打开你的下载工具,开始下载吧!^_^ GetEd2kLink.VBS 代码如下,你也

  • 用VBS实现的发送带Cookie的HTTP请求的代码

    为了方便测试,先写一个回显Cookie的简单的PHP程序: 复制代码 代码如下: <?php foreach($_COOKIE as $key => $value) echo "$key => $value\r\n"; ?> 然后分别用ServerXMLHTTP和XMLHTTP测试: 复制代码 代码如下: Dim http Set http = CreateObject("Msxml2.XMLHTTP") http.open "GE

随机推荐