2010-02-07 24 views
4

所附的VBScript顯示所有可用的WiFi網絡。
它在WinXP上正常工作,但在Win7上無法正常工作。 在WinXP上它顯示了所有可用WiFi網絡的列表,但是在WIn7上它顯示了一個空列表。 問題是什麼?問題的移植的VBScript從WinXP的到的Win7

on error resume next 
set objSWbemServices = GetObject("winmgmts:\\.\root\wmi") 
set colInstances = objSwbemServices.ExecQuery("SELECT * FROM MSNDis_80211_BSSIList") 
for each obj in colInstances 
    if left(obj.InstanceName, 4) <> "WAN " and right(obj.InstanceName, 8)  <> "Miniport" then 
     for each rawssid in obj.Ndis80211BSSIList 
      ssid = "" 
      for i=0 to ubound(rawssid.Ndis80211SSid) 
       decval = rawssid.Ndis80211Ssid(i) 
       if (decval > 31 AND decval < 127) then 
        ssid = ssid & Chr(decval) 
       end if 
      next 
      wscript.echo ssid 
     next 
    end if 
next 

我是一個VBScript的新手,所以請溫柔。

+0

當你運行該腳本升高,會發生什麼?我想知道如果WMI查詢需要管理員權限,並且只是作爲標準用戶運行時失敗。 (特別是,ExecQuery調用似乎可能需要管理員權限,因爲它可以做任何事情。) – 2010-02-08 19:38:08

+0

嗨,埃裏克。 謝謝你的迴應。 我從擁有所有管理員權限的管理員帳戶啓動它。結果是相同的 - 空的消息框。 – 2010-02-09 14:35:29

+3

如果你在下一次錯誤恢復時刪除了什麼?如果腳本失敗,你會得到什麼錯誤和哪一行? – Helen 2010-02-14 13:41:45

回答

3

[我會評論,但沒有足夠的代表:] Visual Studio將允許您調試VBScript,因此您可以確定哪一行特別是導致問題。

導航到包含腳本的目錄,然後運行「WScript的.VBS // d // X」,然後選擇Visual Studio中的調試器。然後,您可以遍歷每條線,並瞭解發生了什麼(source)。

當我執行該腳本(均含有正常和升高的權限)我接收從查詢一個空數組「SELECT * FROM MSNDis_80211_BSSIList」。這可能是問題產生的原因;可能會在Windows 7中棄用源代碼(MSNDis_80211_BSSIList)並將其重命名。

Google還透露了可能包含WMI附加組件的最新驅動程序(如英特爾Wifi驅動程序)之間可能存在的關聯。