Computer >> 컴퓨터 >  >> 시스템 >> Windows

WMI 리포지토리 재설정 실패 오류 해결 방법: 0x80070005, 0x8007041B, 0x80041003

WMI(Windows Management Instrumentation)는 WMI 클래스에 대한 메타 정보와 정의를 저장하는 데이터베이스입니다. 관리자가 원격 시스템을 포함한 다양한 Windows 환경을 관리할 수 있도록 지원합니다. WMI 리포지토리가 손상되면 WMI 서비스가 정상적으로 작동하지 않으며, 때로는 원격 서버에 연결할 때 자격 증명 불일치, 권한 부족, 액세스 거부 등의 오류가 발생하기도 합니다. 이 글에서는 WMI 리포지토리 재설정 실패, 오류 0x80070005, 0x8007041B, 0x80041003을 해결하는 방법을 알아보겠습니다. 해당 오류 메시지에는 "액세스가 거부되었습니다(Access denied)"라는 설명이 함께 표시됩니다.

WMI 리포지토리 재설정 실패, 오류 0x80070005, 0x8007041B, 0x80041003

이러한 오류는 DCOM 수준의 권한 문제 또는 WMI 권한 문제로 인해 발생합니다. 해결 방법을 살펴보기 전에 전체 오류 메시지를 먼저 확인해 보겠습니다.

WMI 리포지토리 확인 실패
오류 코드: 0x80041003
패싯(Facility): WMI
설명: 액세스가 거부됨

WMI 리포지토리 재설정 실패
오류 코드: 0x80070005
패싯(Facility): Win32
설명: 액세스가 거부되었습니다.

패싯(Facility): Win32로 표시되는 경우 DCOM 수준의 보안 권한 문제를 의미합니다. 즉, 원격 서버에 연결하는 데 사용 중인 계정이 WMI를 통해 원격 장치에 접근할 수 있는 DCOM 수준의 보안 권한을 갖고 있지 않다는 뜻입니다.

패싯(Facility): WMI로 표시되는 경우 WMI 수준의 보안 권한 문제를 의미합니다. 즉, WMI 네임스페이스에 접근하려는 계정에 WMI 수준의 보안 권한이 없다는 뜻입니다.

이 문제들을 해결하려면 다음 방법들을 순서대로 시도해 보세요.

  1. WBEM 리포지토리 정리
  2. WMI 값 다시 빌드
  3. DCOM 권한 확인

1] WBEM 리포지토리 정리

먼저 WBEM 리포지토리를 정리하고 문제가 해결되는지 확인합니다. 명령 프롬프트를 관리자 권한으로 실행한 후 아래 명령어를 입력하고 Enter 키를 누릅니다.

net stop winmgmt

확인 메시지가 나타나면 Y를 입력하여 진행합니다. 명령이 완료될 때까지 기다립니다.

다음으로 아래 명령어를 복사하여 명령 프롬프트에 붙여넣고 Enter 키를 누릅니다.

C:\Windows\System32\wbem\Repository*

마찬가지로 확인 메시지가 나타나면 Y를 선택합니다. 그런 다음 Exit를 입력하고 Enter 키를 눌러 명령 프롬프트를 닫습니다.

컴퓨터를 재시작하고 몇 분 정도 기다린 후 문제가 해결되었는지 확인합니다. 이 방법으로 해결되지 않으면 WMI 값을 다시 빌드해 보세요.

2] WMI 값 다시 빌드

앞서 설명했듯이 이러한 오류는 사용자에게 WMI 작업을 수행할 권한이 없을 때 발생합니다. WMI 값을 다시 빌드하면 이 문제를 해결할 수 있습니다.

메모장을 열고 아래 내용을 복사하여 붙여넣습니다.

@echo on 
cd /d c:\temp 
if not exist %windir%\system32\wbem goto TryInstall 
cd /d %windir%\system32\wbem 
net stop winmgmt 
winmgmt /kill 
if exist Rep_bak rd Rep_bak /s /q 
rename Repository Rep_bak 
for %%i in (*.dll) do RegSvr32 -s %%i 
for %%i in (*.exe) do call :FixSrv %%i 
for %%i in (*.mof,*.mfl) do Mofcomp %%i 
net start winmgmt 
goto End 

:FixSrv 
if /I (%1) == (wbemcntl.exe) goto SkipSrv 
if /I (%1) == (wbemtest.exe) goto SkipSrv 
if /I (%1) == (mofcomp.exe) goto SkipSrv 
%1 /Regserver 
:SkipSrv 
goto End 
:TryInstall 
if not exist wmicore.exe goto End 
wmicore /s 
net start winmgmt 
:End

파일 이름을 WMI.bat로 저장하고 메모장을 닫습니다. 이후 WMI.bat 파일을 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행을 선택하면 WMI 값이 다시 빌드됩니다.

빌드가 완료되면 아래 단계에 따라 WMI 권한을 확인합니다.

바탕 화면에서 내 PC(This PC) 아이콘을 마우스 오른쪽 버튼으로 클릭하고 관리를 선택하여 컴퓨터 관리 창을 엽니다.

왼쪽 목록에서 컴퓨터 관리(로컬)를 더블클릭해 확장한 후, 서비스 및 응용 프로그램도 더블클릭하여 확장합니다. 그다음 WMI 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하면 WMI 컨트롤 속성 대화 상자가 열립니다.

보안 탭으로 이동하여 Root 폴더를 확장한 뒤 Security 하위 폴더를 선택하고 오른쪽 하단의 보안 버튼을 클릭합니다. 그러면 ROOT 보안 대화 상자가 화면에 나타납니다.

다음 권한들이 Authenticated Users(인증된 사용자)에 대해 활성화되어 있는지 확인하세요.

  • 메서드 실행(Execute Methods)
  • 공급자 쓰기(Provider Write)
  • 계정 사용(Enable Account)

확인 후 확인 버튼을 눌러 ROOT 보안 대화 상자를 닫고, 컴퓨터 관리 창을 종료한 뒤 컴퓨터를 재시작합니다. 그런 다음 문제가 계속되는지 확인합니다.

3] DCOM 권한 확인

Windows 검색을 클릭하고 Dcomcnfg를 입력한 후 검색 결과에서 해당 앱을 실행합니다.

구성 요소 서비스 > 컴퓨터 > 내 컴퓨터로 이동합니다. 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하면 내 컴퓨터 속성 대화 상자가 열립니다. 여기서 COM 보안 탭을 선택합니다.

액세스 권한 섹션에서 기본값 편집(Edit Limits) 버튼을 클릭하면 액세스 권한 대화 상자가 열립니다. Everyone 그룹을 선택하고 다음 두 가지 권한이 허용되어 있는지 확인합니다.

  • 로컬 액세스(Local Access)
  • 원격 액세스(Remote Access)

위 권한들의 허용 체크박스가 선택되어 있지 않다면 체크한 후 확인을 클릭합니다.

이어서 같은 창의 시작 및 활성화 권한 섹션에서 기본값 편집 버튼을 클릭합니다. Everyone 그룹을 선택하고 다음 권한들이 허용되어 있는지 확인합니다.

  • 로컬 시작(Local Launch)
  • 로컬 활성화(Local Activation)

체크박스가 선택되어 있지 않다면 선택한 후 확인을 클릭하고, 적용 후 확인을 눌러 내 컴퓨터 속성 대화 상자를 닫습니다.

이제 구성 요소 서비스 창에서 구성 요소 서비스 > 컴퓨터 > 내 컴퓨터 > DCOM 구성으로 이동합니다. 오른쪽 목록을 스크롤하여 Windows Management and Instrumentation을 찾은 후 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다.

보안 탭에서 시작 및 활성화 권한 섹션의 편집 버튼을 클릭합니다. 사용자 그룹에서 Administrators를 선택하고 다음 권한들이 허용되어 있는지 확인합니다.

  • 로컬 시작(Local Launch)
  • 원격 시작(Remote Launch)
  • 로컬 활성화(Local Activation)
  • 원격 활성화(Remote Activation)

체크박스가 선택되어 있지 않다면 모두 선택한 후 확인을 클릭합니다.

Windows WMI 리포지토리를 복구하거나 완전히 다시 빌드하는 방법

WMI 리포지토리가 손상되면 당시 수행 중인 작업에 따라 다양한 오류가 발생합니다. WMI에는 자체 복구 모드가 내장되어 있습니다. 리포지토리 손상을 감지하면 자동으로 자체 복구 모드가 활성화되며, VSS 백업 메커니즘으로 생성된 백업 이미지를 찾아 AutoRestore 방식으로 유효한 이미지를 복원하려고 시도합니다.

자체 복구에 실패하면 WMI 리포지토리가 손상되었다는 여러 오류 메시지가 표시됩니다. 이 경우 관리자 권한 명령 프롬프트에서 명령을 실행하여 WMI 리포지토리를 수동으로 복구하거나 다시 빌드할 수 있습니다.

WMI가 손상되었는지 확인하는 방법

WMI가 손상되면 여러 오류와 권한 문제가 발생합니다. 대표적인 증상은 다음과 같습니다.

  • rootdefault 또는 rootcimv2 네임스페이스에 연결할 수 없으며, 오류 코드 0x80041002(WBEM_E_NOT_FOUND)가 반환됨
  • "WMI. Not Found" 오류가 발생하거나 컴퓨터 관리(로컬) 속성을 열 때 시스템이 멈춤
  • 0x80041010(WBEM_E_INVALID_CLASS) 오류 발생
  • 스키마/개체 누락
  • 비정상적인 연결/작업 오류(0x8007054e) 발생
  • wbemtest 유틸리티를 실행할 때마다 시스템이 멈춤

WMI 손상 여부를 확실하게 확인하려면 관리자 권한 명령 프롬프트에서 다음 명령을 실행하세요.

winmgmt /verifyrepository

명령 실행 후 "리포지토리가 일관되지 않습니다(repository is not consistent)"라는 메시지가 표시되면 WMI가 손상된 것입니다. 반대로 "리포지토리가 일관됩니다(repository is consistent)"라는 메시지가 표시되면 리포지토리에는 문제가 없으므로 다른 원인을 찾아야 합니다.

이 글이 문제 해결에 도움이 되길 바랍니다.