2011-08-16 3 views
3

나는 엉망이되어 확실한 대답을 찾을 수 없습니다. WMI를 통해 네트워크 어댑터 목록을 얻으려고합니다. 제가 사용하고있는 명령은 아무 문제없이 우리 사무실의 거의 모든 워크 스테이션에서 잘 작동하고 있습니다. 어제 문제가 생겼어. 하나의 시스템이 실패합니다. 사용자 시스템에서 직접 실행되기 때문에 명시 적으로 컴퓨터 이름을 넣을 필요가 없으므로 "." 로컬 컴퓨터 용. 그렇다면 나는 "누가"에 관심이 없기 때문에 가장의 도용은 없습니다. 사용자는 자신의 장비 리소스를 쿼리 할 수 ​​있어야합니다. 나는 무엇을 사용하고 있었는지 ...GETOBJECT ("winmgmts :")를 통해 WMI 개체를 가져올 수 없습니다.

oWMIService = GETOBJECT("winmgmts:\\.\root\cimv2") 
oItems = oWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48) 

내가 발견 한 것으로부터, 어떤 곳은 기계 경로 참조에 대해 "\"를 제거한다고 말합니다. 그렇게하면 내 컴퓨터가 실패하지만 다른 컴퓨터에서도 문제가 발생하지 않습니다. 그래서 나는 심지어 서비스를위한 루트에 가려고 시도해 보았습니다.

oWMIService = GETOBJECT("winmgmts:\\.") 

내가지고있어 실제 오류가

...

Error Code: 0x800401ea: Moniker cannot open file. 

나는이 모니 커의 오류에 대한 몇 가지 검색을 해봤지만, 해상도를 얻을하는 방법을 모르겠어요.

답변

3

가끔 WMI가 손상되어 혼동을 일으킬 수 있습니다. 당신이 시도 할 수있는 옵션은 다음과 같습니다

재 등록/배치이 같은 스크립트를 사용하여 WMI 구성 요소를 다시 컴파일 : 그게 해결되지 않으면

net stop winmgmt 
cd /d %windir%\system32\wbem\ 
for %i in (*.dll) do RegSvr32 /s %i 
for %i in (*.mof, *.mfl) do Mofcomp %i 
net start winmgmt 

, 함께 WMI 데이터베이스의 리셋을 이 배치 :

net stop winmgmt 
cd /d %windir%\system32\wbem\ 
rmdir /s /q Repository 
rmdir /s /q Logs 
mkdir Logs 
net start winmgmt 

그리고/또는 당신을 위해 제안을 가지고 있는지 확인하기 위해 WMIDiag.vbs script 같은 도구를 사용해보십시오.

관련 문제