sysinternals 有个小工具 BGInfo,能把一些系统信息绘制到壁纸上。我一般想看的信息有两项,启动时间和本地 IP。
在它的预制信息列表里,这两个信息都有,只是 IP 地址有些问题。它会把所有枚举出的网卡都罗列出来,哪怕都不存在对应的 IP。如果你的系统里存在的网卡有不少(例如虚拟机、虚拟专用网之类的,都会创建虚拟网卡出来),那桌面上就很不好看。
好在 BGInfo 有一定的扩展定制能力,能够显示指定执行的某个 VBScript 脚本的输出。最后我的显示 IP 脚本如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Dim NICs, NIC, IPPrefix, StrIP, ComputerName IPPrefix = "192" Set NICs = GetObject("winmgmts:").InstancesOf("Win32_NetworkAdapterConfiguration") For Each NIC In NICs If NIC.IPEnabled Then StrIP = NIC.IPAddress(0) If Left(StrIP, Len(IPPrefix)) = IPPrefix Then Exit For End If End if Next Echo(StrIP) ' Dim Msg ' Msg = "IP Address: " & StrIP ' Set WshNetwork = WScript.CreateObject("WScript.Network") ' ComputerName= WshNetwork.Computername ' Msg = Msg & vbNewLine & "Computer Name: " & ComputerName ' MsgBox Msg, 4160, "IP Address and Computer Name" ' WScript.Quit(0) |
调整这个脚本费劲的地方有点好笑,在于 Echo
语句。我最开头写 Wsh.Echo
和 WScript.Echo
在命令行下没问题,但指定到 BGInfo 中就报错,说对象不存在。看了一眼帮助文档,竟然是干脆去掉就 OK。后半段的注释掉的代码都是备忘,其实没有用的。