如何获得鼠标的唯一ID

时间:2015-02-02 08:49:43

标签: windows batch-file vbscript cmd wmic

我希望获得一个独特的鼠标ID,前提是每个鼠标品牌在实验室中都是相同的。 我尝试使用WMIC来获取设备属性。我的VBS脚本是这样的:

strComputer = "." 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_PointingDevice",,48) 

 Wscript.Echo "DeviceID: " & objItem.DeviceID

我尝试使用不同的鼠标品牌生成此脚本,并输出唯一的设备ID。但是当我使用相同型号/品牌的鼠标时,会生成相同的设备ID。请帮我找到一个独特的数据,用于识别实验室中的每只老鼠。

1 个答案:

答案 0 :(得分:1)

我认为Thangadurai对他的评论是正确的做你原来的问题......但是,你可以尝试找到所需的鼠标id 运行下一个代码片段。

wmic最简单的解决方案:

wmic path  Win32_PointingDevice get * /FORMAT:Textvaluelist.xsl

vbScript关于相同的输出:如果保存为cscript 28273913.vbs,请使用28273913.vbs

' VB Script Document
option explicit
' NameSpace: \root\CIMV2 Class : Win32_PointingDevice
' D:\VB_scripts_help\Scriptomatic
' 

On Error GOTO 0

Dim arrComputers, strComputer, objWMIService, colItems, objItem
Dim strPowerManagementCapabilities

arrComputers = Array(".")
   WScript.Echo "NameSpace: \root\CIMV2 Class : Win32_PointingDevice"
For Each strComputer In arrComputers
   WScript.Echo "..."
   WScript.Echo "=========================================="
   WScript.Echo "Computer: " & strComputer
   WScript.Echo "=========================================="

   Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
   Set colItems = objWMIService.ExecQuery( _
          "SELECT * FROM Win32_PointingDevice", "WQL", _
              wbemFlagReturnImmediately + wbemFlagForwardOnly)

   For Each objItem In colItems
      WScript.Echo "Availability: " & objItem.Availability
      WScript.Echo "Caption: " & objItem.Caption
      WScript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode
      WScript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig
      WScript.Echo "CreationClassName: " & objItem.CreationClassName
      WScript.Echo "Description: " & objItem.Description
      WScript.Echo "DeviceID: " & objItem.DeviceID
      WScript.Echo "DeviceInterface: " & objItem.DeviceInterface
      WScript.Echo "DoubleSpeedThreshold: " & objItem.DoubleSpeedThreshold
      WScript.Echo "ErrorCleared: " & objItem.ErrorCleared
      WScript.Echo "ErrorDescription: " & objItem.ErrorDescription
      WScript.Echo "Handedness: " & objItem.Handedness
      WScript.Echo "HardwareType: " & objItem.HardwareType
      WScript.Echo "InfFileName: " & objItem.InfFileName
      WScript.Echo "InfSection: " & objItem.InfSection
      WScript.Echo "InstallDate: " & WMIDateStringToDate(objItem.InstallDate)
      WScript.Echo "IsLocked: " & objItem.IsLocked
      WScript.Echo "LastErrorCode: " & objItem.LastErrorCode
      WScript.Echo "Manufacturer: " & objItem.Manufacturer
      WScript.Echo "Name: " & objItem.Name
      WScript.Echo "NumberOfButtons: " & objItem.NumberOfButtons
      WScript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
      WScript.Echo "PointingType: " & objItem.PointingType
      If Isnull( objItem.PowerManagementCapabilities) Then
        strPowerManagementCapabilities=""
      Else
        strPowerManagementCapabilities=Join(objItem.PowerManagementCapabilities, ",")
      End If
         WScript.Echo "PowerManagementCapabilities: " & strPowerManagementCapabilities
      WScript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
      WScript.Echo "QuadSpeedThreshold: " & objItem.QuadSpeedThreshold
      WScript.Echo "Resolution: " & objItem.Resolution
      WScript.Echo "SampleRate: " & objItem.SampleRate
      WScript.Echo "Status: " & objItem.Status
      WScript.Echo "StatusInfo: " & objItem.StatusInfo
      WScript.Echo "Synch: " & objItem.Synch
      WScript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName
      WScript.Echo "SystemName: " & objItem.SystemName
      WScript.Echo "."
   Next
Next

Function WMIDateStringToDate(dtmDate)
    WMIDateStringToDate = ( Left(dtmDate, 4) & "/" & _
    Mid(dtmDate, 5, 2) & "/" & Mid(dtmDate, 7, 2) _
    & " " & Mid (dtmDate, 9, 2) & ":" & Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate,13, 2))
End Function

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

比以前的wmic示例更复杂,可以在一步中针对更多计算机运行它。请注意arrComputers = Array(".")行。这里"."表示此计算机,可以通过计算机名称列表或 IP地址重写,例如

arrComputers = Array _
   ( "computer_1_name" _
   , "computer_2_IP" _
   , "computer_3_name" _
   )