2010-02-07 3 views
4

첨부 된 VBScript는 사용 가능한 모든 WiFi 네트워크를 표시합니다.
WinXP에서는 정상적으로 작동하지만 Win7에서는 작동하지 않습니다. WinXP에서 사용 가능한 모든 무선 네트워크 목록을 표시하지만 WIn7에서는 빈 목록을 표시합니다. 무엇이 문제입니까?WinXP에서 Win7로 VBScript를 이식 할 때의 문제

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 호출은 아무 것도 할 수있는 것처럼 관리자 권한이 필요할 수도 있습니다.) –

+0

안녕하세요, Eric. 답변 해 주셔서 감사합니다. 모든 관리자 권한으로 관리자 계정에서 시작했습니다. 결과는 같은 - 비어있는 메시지 상자입니다. –

+3

'다음에 오류 재개시'을 제거하면 어떻게됩니까? 스크립트가 실패하면 어떤 오류가 발생하며 어떤 행에 있습니까? – Helen

답변

3

[코멘트 : but rep : P] Visual Studio에서는 VBScript를 디버그하여 문제의 원인이되는 행을 확인할 수 있습니다.

스크립트가 들어있는 디렉터리로 이동 한 다음 'wscript .vbs // D // X'를 실행 한 다음 Visual Studio를 디버거로 선택하십시오. 그런 다음 각 행을 실행하여 어떤 일이 발생했는지 알 수 있습니다 (source).

일반 및 상승 된 권한으로이 스크립트를 실행하면 "SELECT * FROM MSNDis_80211_BSSIList"쿼리에서 빈 배열이 수신됩니다. 문제가 어디에서 유래하고 있는지 파악할 수 있습니다. 어쩌면 소스 (MSNDis_80211_BSSIList)가 Windows 7에서 더 이상 사용되지 않고 이름이 바뀌었을 수도 있습니다.

Google에서는 또한 WMI 추가가 포함될 수있는 최신 드라이버 (예 : Intel Wifi 드라이버) 사이에 가능한 상관 관계가 있음을 나타냅니다.

관련 문제