이 글에서는 RegAsm.exe가 무엇인지, RegAsm.exe를 사용해 DLL을 등록하거나 등록 취소하는 방법, 그리고 RegAsm.exe와 Regsvr32.exe의 차이점까지 자세히 알아보겠습니다.
Windows 11/10에서 RegAsm.exe란 무엇인가요?
RegAsm은 Register Assembly(어셈블리 등록)의 줄임말입니다. RegAsm.exe는 마이크로소프트가 개발한 Windows의 정품 구성 요소로, 어셈블리 등록 도구(Assembly Registration Tool)를 실행하는 역할을 합니다. 이 도구가 실행되면 어셈블리 내부의 메타데이터를 읽어 필요한 항목들을 레지스트리에 추가합니다. RegAsm.exe 자체는 PC에 어떠한 위협도 가하지 않지만, 일부 악성코드가 RegAsm.exe로 위장하는 경우가 간혹 있으므로 주의가 필요합니다.
어셈블리 등록 도구는 어셈블리 내부의 메타데이터를 읽고 레지스트리에 필요한 항목을 추가하여, COM 클라이언트가 .NET Framework 클래스를 투명하게 생성할 수 있도록 합니다. 클래스가 한 번 등록되면 모든 COM 클라이언트는 해당 클래스를 마치 COM 클래스처럼 사용할 수 있습니다. 클래스는 어셈블리가 설치될 때 단 한 번만 등록되며, 실제로 등록되기 전까지는 COM에서 해당 어셈블리 내 클래스의 인스턴스를 생성할 수 없습니다.
RegAsm.exe는 악성코드인가요?
간혹 백신 프로그램이 Windows OS의 중요한 시스템 파일을 위협으로 표시하는 경우가 있습니다. 이는 오탐(false positive)일 수도 있고, 악성코드가 OS 파일과 동일한 이름을 사용해 위장했기 때문일 수도 있습니다. 안타깝게도 RegAsm.exe 역시 이런 상황이 발생할 수 있습니다.
불법 복제 프로그램을 설치한 적이 있고 백신이 RegAsm.exe를 위협으로 감지했다면, 다음과 같이 조치하는 것이 좋습니다.
- 흔적이 남지 않도록 불법 복제 프로그램을 완전히 제거합니다.
- 백신 및 안티 멀웨어 프로그램으로 PC 전체를 검사합니다.
- PC에서 불법 복제 설치 파일과 관련 파일을 모두 삭제합니다.
이러한 조치를 통해 PC를 정상 상태로 되돌릴 수 있습니다.
악성코드에 감염된 RegAsm.exe가 PC에 침투하는 것을 예방하려면, 불법 복제된 Microsoft Office나 Windows, 기타 프로그램을 설치하지 않는 것이 중요합니다. 이것이 악성코드를 피하고 PC를 안전하게 지키는 가장 확실한 방법입니다.
RegAsm.exe로 DLL 등록 취소하는 방법
이 도구를 실행하려면 Visual Studio 개발자 명령 프롬프트 또는 Visual Studio 개발자 PowerShell을 사용해야 합니다. RegAsm.exe로 DLL을 등록 취소하는 것은 등록하는 것만큼 간단합니다.
명령 프롬프트를 열고 다음 명령을 실행합니다. <dllfilename> 부분은 등록 취소하려는 DLL의 이름으로 바꿔 입력하세요.
regasm /u <dllfilename>.dll
DLL을 완전히 등록 취소하려면 해당 DLL의 형식 라이브러리(type library)도 함께 등록 취소해야 합니다. 이 경우 다음 명령을 실행합니다.
regasm <dllfilename> /tlb /unregister
RegAsm.exe와 Regsvr32.exe는 어떻게 다른가요?
Regsvr32.exe는 레지스트리에 DLL과 ActiveX 컨트롤을 등록하는 데 사용되는 명령줄 도구입니다. 반면 RegAsm.exe는 .NET 구성 요소가 COM 구성 요소처럼 인식되도록 레지스트리 항목을 생성합니다. 참고로 RegAsm.exe는 .NET SDK에 포함되어 배포됩니다.
Regasm Codebase란 무엇인가요?
RegAsm Codebase 명령줄 옵션은 레지스트리에 코드베이스(codebase) 항목을 생성하는 데 사용됩니다. 레지스트리의 코드베이스 항목은 전역 어셈블리 캐시(GAC)에 설치되지 않은 어셈블리의 경로를 지정합니다. 전역 어셈블리 캐시에는 여러 프로그램이 공동으로 사용하는 어셈블리들이 저장됩니다. 코드베이스 옵션을 사용하는 어셈블리 파일은 전역 어셈블리 캐시 내 다른 어셈블리와의 충돌을 방지하기 위해 반드시 강력한 이름(strong-named)을 가진 어셈블리여야 합니다.
오늘 이 글을 통해 새로운 정보를 얻어 가셨기를 바랍니다.