IT 업계에서 지난 8년간 근무하면서 가장 흥미롭게 느꼈던 점 중 하나는 바로 까다로운 윈도우 오류 메시지의 해결책을 찾아내는 작업이었습니다. 지금까지 '장치를 시작할 수 없습니다(The Device Cannot Start)'나 'Stop: 0x00000F4 블루스크린' 오류 등 다양한 문제를 다룬 적이 있습니다.
그중에서 최근에 마주친 오류 메시지는 다음과 같습니다.
Microsoft (C) Register Server has stopped working
이 메시지는 Windows Vista Ultimate x64 환경에서 명령 프롬프트의 regsvr32 명령어를 사용해 DLL 파일을 등록하려던 도중에 나타났습니다. 평소에는 Vista Business x32 버전에서 아무 문제 없이 DLL을 등록해 왔지만, 64비트(x64) 버전에서는 처음 시도해 보는 과정이었습니다.
오류의 주요 원인
이 오류는 대체로 Windows Vista 또는 Windows XP의 x64(64비트) 버전에서 더 자주 발생하는 경향이 있으며, 주된 원인은 Windows Vista의 데이터 실행 방지(Data Execution Prevention, DEP) 기능입니다. DEP는 악성 코드가 메모리 영역을 악용하는 것을 막아주는 보안 기능이지만, 특정 상황에서는 정상적인 시스템 도구인 regsvr32까지 차단할 수 있습니다.
이 문제를 해결하려면 DEP 설정 화면에서 regsvr32에 대한 예외 항목을 추가해 주어야 합니다. 아래 순서대로 따라 하면 됩니다.
DEP 예외 추가하기
1단계: 시스템 설정 열기
시작 메뉴를 클릭한 후 제어판으로 이동하여 시스템을 클릭합니다.

2단계: 성능 설정 진입
고급 탭을 선택한 뒤 성능 항목에서 설정 버튼을 클릭합니다.

3단계: 데이터 실행 방지 옵션 변경
데이터 실행 방지(DEP) 탭을 연 다음, '모든 프로그램과 서비스에 대해 다음을 제외하고 DEP 사용' 라디오 버튼을 선택합니다.

4단계: regsvr32.exe 예외 등록
추가 버튼을 누르고 C:\Windows\System32 폴더로 이동한 후 regsvr32.exe 파일을 선택합니다. 이때 '컴퓨터가 보호되지 않고 공격에 취약해질 수 있다'는 경고 메시지가 표시되면, 그대로 확인을 눌러 계속 진행합니다.

참고: 64비트 운영체제에서는 System32 폴더가 아닌 C:\Windows\SysWOW64 폴더의 regsvr32.exe를 사용해야 하는 경우도 있습니다. 등록하려는 DLL이 32비트인지 64비트인지에 따라 적절한 파일을 선택하세요.
마무리
확인을 눌러 설정을 저장한 뒤, 다시 한번 확인을 클릭하여 창을 닫습니다. 이후 명령 프롬프트에서 regsvr32 명령을 다시 실행해 보세요. 이제 해당 오류 없이 DLL이 정상적으로 등록될 것입니다.
만약 위 방법을 적용한 후에도 같은 오류가 계속 발생한다면, 관리자 권한으로 명령 프롬프트를 실행했는지 확인해 보시기 바랍니다. 그래도 해결되지 않는 경우에는 댓글로 알려주세요. 함께 해결 방법을 찾아보겠습니다!