0

我今天带着我的一段有问题的代码来找你。

Set mac = CreateObject("WScript.Shell").Exec("cmd.exe /C ipconfig /all")
Do While mac.Status = 0
  WScript.Sleep 100
Loop 
MsgBox "Your MAC address is " & vbNewLine & Left(Right(mac.StdOut.ReadAll, 775),756), vbExclamation, "Physical Address"
Set mac = Nothing

我的目标是找到计算机的物理地址并用msgbox返回;
然而,在运行这个程序时,我遇到了两件事:

  1. 即使我在命令中添加了 /C,CMD 程序也没有关闭。
  2. 经过仔细检查,我发现(使用 Len() 函数)在 CMD ipconfig /all 中计算了超过 6000 个字符,但是使用此程序,它表明该命令仅返回 4000 个字符。

我知道事实有问题,Set mac = CreateObject("WScript.Shell").Exec("cmd.exe /C ipconfig /all")但即使在检查了其他答案等之后我也不知道。

4

1 回答 1

1

我建议您忘记运行 ipconfig.exe 然后尝试解析其所有返回的文本以检索MACAddress,而是使用 WMI

例子:

Set WMI = GetObject("winmgmts:\\.\root\cimv2")
Set NIC = WMI.ExecQuery("Select MACAddress " & _
  "From Win32_NetworkAdapter " & _
  "Where MACAddress Is Not NULL " & _
  "And NetEnabled='TRUE' " & _
  "And PhysicalAdapter='TRUE'") 
For Each Adapter In NIC
  MsgBox "Your MAC Address is:" & vbNewLine & _
  Adapter.MACAddress, vbInformation, "Physical Address"   
Next
于 2020-07-16T12:52:36.637 回答