Windows 7 64 비트에서 DLL 파일을 등록하려면 어떻게합니까?


101

다음 코드를 사용하려고했습니다.

cd c:\windows\system32
regsvr32.exe dllname.ax

그러나 이것은 나를 위해 작동하지 않습니다. 64 비트 프로세서가있는 Windows 7에서 DLL 파일을 등록하려면 어떻게해야합니까?


이 질문에 "vb.net"태그가 붙은 것을 보면 VB.NET에서 만든 DLL을 등록하려고하는 이유가 궁금합니다. 와 함께 사용하려면 regsvr32DLL이 함수 DllRegisterServerDllUnregisterServer. 생성하는 대부분의 DLL은 등록하지 않습니다.
Cody Gray

12
작동하지 않거나 유용하지 않다는 것은 무엇을 의미합니까? 오류 메시지가 표시됩니까? 그것은 무엇을 말하는가?
Cody Gray

답변:


68

입력 regsvr32 name.dll프롬프트 명령에 (! 높은 모드에서 실행)을 입력하고 Enter 키를 눌러 "입력합니다." 참고 name.dll등록 할 것을 DLL의 이름으로 교체해야합니다. 예를 들어, iexplore.dll을 등록하려면 regsvr32 iexplore.dll.


5
regsvr32 파일 이름과 확장자를 가진 .dll 파일의 경로를 입력하고 Enter 키를 누릅니다
RK 샤르마에게

202

32 비트 또는 64 비트 dll인지 지정하지 않고 오류 메시지를 포함하지 않지만이 KB 문서 : Regsvr32.exe를 실행할 때 발생하는 오류 메시지에 설명 된 것과 동일한 문제라고 생각합니다. 64 비트 Windows

그 기사에서 인용 :

System32 폴더의 Regsvr32.exe 파일이 64 비트 버전이기 때문에이 문제가 발생합니다. Regsvr32를 실행하여 DLL을 등록하면 기본적으로 64 비트 버전을 사용하게됩니다.

해당 기사의 솔루션 :

이 문제를 해결하려면 % SystemRoot % \ Syswow64 폴더에서 Regsvr32.exe를 실행하십시오. 예를 들어 다음 명령을 입력하여 DLL을 등록합니다. cd \windows\syswow64 regsvr32 c:\filename.dll


13
이것이 선택된 답변이 아닌 이유는 무엇입니까?
Mike Devenney 2014

5
이것은 정말로 정답이어야합니다. 나는 그의 원래 게시물에서 구문이 잘못되었음을 이해할 수 있지만 Rajkumar는 올바른 구문을 사용하더라도 오류 메시지를 받았다고 언급했습니다. 이것은 하나가 아닌 검색하는 사람에 대한 정답을 얻기 위해 두 단계를 수행합니다. 먼저 정답을 선택한 다음 댓글 체인을 따라이 게시물에 끝납니다.
Rob :

102

DLL이 32 비트 인 경우 :

\ WINDOWS \ SysWOW64와 \ C에 DLL을 복사
에서 상승 프롬프트 명령 :%windir%\SysWoW64\regsvr32.exe %windir%\SysWoW64\namedll.dll

DLL이 64 비트 인 경우 :

\ WINDOWS \ SYSTEM32 \ C에 DLL을 복사
에서 상승 프롬프트 명령 :%windir%\System32\regsvr32.exe %windir%\System32\namedll.dll

나는 그것이 잘못된 방향으로 보이는 것을 알고 있지만 그것이 작동하는 방식입니다. 보다:

http://support.microsoft.com/kb/249873
인용구 : "참고 Windows 운영 체제
의 64 비트 버전 에는 Regsv32.exe 파일의 두 가지 버전이 있습니다. 64 비트 버전은 % systemroot % \입니다. System32 \ regsvr32.exe.
32 비트 버전은 % systemroot % \ SysWoW64 \ regsvr32.exe입니다.
"


26
support.microsoft.com에 대한 링크를 사용하여 "잘못된 방식으로 보이지만 이것이 작동하는 방식입니다."에 +1 ... 믿기 어려운 링크없이.
Trevor Boyd Smith

6
"높은 cmd에서"는 매우 중요합니다 !!
shindigo

4
나는 그것을 system32 또는 syswow64 폴더에 복사 할 필요가 없다고 생각합니다. 파일이있는 곳에 등록하기 만하면됩니다.
니 코스

30

x64 시스템에서 system32는 64 비트 용이고 syswow64는 32 비트 용입니다 (다른 답변에 명시된 것과는 반대로). WOW (Windows on Windows)는 64 비트 하위 시스템에서 실행되는 32 비트 하위 시스템입니다.

이름 지정 용어가 엉망이고 혼란 스러울뿐입니다.

다시 ...

syswow64는 64 비트가 아닌 32 비트입니다.

system32는 32 비트가 아니라 64 비트입니다.

이러한 각 디렉토리에는 regsrv32가 있습니다. 하나는 64 비트이고 다른 하나는 32 비트입니다. odbcad32 및 et al과 동일한 거래입니다. ( 64 비트 인 system32에서 기본 odbcad32와 함께 표시되지 않는 32 비트 ODBC 드라이버 를 보려면 )


1
왜 중요할까요? regsvr32당신은 32 비트 또는 64 비트 DLL을 등록 여부 등 세부 사항에 대해 처리됩니다, 이론적으로는 감지 : stackoverflow.com/questions/18935163/...
Sk8erPeter

8

시작 메뉴를 열고 검색 상자에 cmd를 입력합니다. Ctrl + Shift를 누른 상태에서 Enter 키를 누릅니다.

관리자 모드에서 명령 프롬프트를 실행합니다.

이제 다음을 입력하십시오. regsvr32 MyComobject.dll


6

마지막으로 솔루션이 CMD를 관리자 권한으로 실행 한 다음

cd \windows\syswow64

그런 다음 이것을 쓰십시오

regsvr32 c:\filename.dll

그 대답이 당신을 도울 수 있기를 바랍니다.


이미 filename.dll을 syswow64 폴더에 복사하고 명령 프롬프트에서 작업 디렉토리를 syswow64로 변경 한 경우 "regsvr32 c : \ filename.dll"의 "c : \"가 필요하지 않습니다. 즉, "에 regsvr32 C : \ filename.dll" "에 regsvr32 filename.dll"읽어야합니다
조쉬 McKearin

6

DLL이 32 비트 인 경우 :

  1. DLL을 C : \ Windows \ SysWoW64 \에 복사합니다.
  2. 상승 된 cmd : % windir % \ SysWoW64 \ regsvr32.exe % windir % \ SysWoW64 \ namedll.dll

DLL이 64 비트 인 경우 :

  1. DLL을 C : \ Windows \ System32 \에 복사합니다.
  2. 상승 된 cmd : % windir % \ System32 \ regsvr32.exe % windir % \ System32 \ namedll.dll

6

여기에있는 모든 것이 잘못된 길로 실패했습니다. 그런 다음 이전 Win95 시절의 트릭을 기억했습니다. .dll이있는 프로그램 폴더를 열고 C : / Windows / System32를 열고 regsvr32까지 아래로 스크롤 한 다음 프로그램 폴더에서 rgsrver32로 dll을 끌어다 놓습니다. 붐, 완료.


2
이것은 작동하지만 관리자로 실행해야하는 경우 문제가 될 수 있습니다.
workabyte

3

오류 메시지를 아는 것이 다소 중요합니다. 그것은 정보를 제공하기위한 것입니다. 비록 그것이 당신에게 이해가되지 않더라도 그것이 우리에게하는 일입니다. 추측 할 수밖에없는 DLL은 32 비트 DirectX 필터라고 말하고 싶습니다. 이 경우 적절한 조치를 취해야합니다.

cd c:\windows\syswow64
move ..\system32\dllname.ax .
regsvr32.exe dllname.ax

UAC가 필요한 레지스트리 액세스를 중지 할 수 없도록 관리자 권한 명령 프롬프트에서 실행해야합니다. superuser.com에서 이에 대한 추가 질문을하십시오.


3

방금이 매우 간단한 방법을 테스트 했으며 완벽하게 작동하지만 기본 제공 관리자 계정을 사용하므로 권한 상승을 위해 험난한 작업을 수행 할 필요가 없습니다.

다음 배치 파일은 사용자가 시스템 폴더 안팎으로 파일을 이동할 필요를 덜어줍니다. 또한 적절한 버전을 적용하기 위해 Windows에 맡깁니다.Regsvr32 .

명령:

  • 등록하려는 라이브러리 ( -.dll또는 -.ax) 파일 이 포함 된 폴더 에서 새 텍스트 파일을 열고 아래 루틴 중 하나에 붙여 넣으십시오.

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 64-BIT SYSTEMS
    copy %1 C:\Windows\System32
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    

    echo BEGIN DRAG-AND-DROP %n1 REGISTRAR FOR 32-BIT SYSTEMS
    copy %1 C:\Windows\SysWOW64
    regsvr32 "%nx1"
    echo END BATCH FILE
    pause
    
  • 새 텍스트 파일을 배치 ( -.bat) 파일 로 저장합니다 . 그런 다음 -.dll또는 -.ax파일을 배치 파일 위에 끌어다 놓습니다 .

  • UAC가 관리자로 배치 파일을 실행할 기회를 제공하지 않는 경우 권한을 수동으로 높여야 할 수 있습니다 (지침은 Windows 7 용임).

    1. 배치 파일을 마우스 오른쪽 버튼으로 클릭합니다.
    2. 고르다 Create shortcut ;
    3. 바로 가기를 마우스 오른쪽 버튼으로 클릭하십시오.
    4. 고르다 Properties ;
    5. 클릭 Compatibility탭을 하십시오.
    6. 레이블이 표시된 상자를 선택하십시오. Run this program as administrator .
    7. 배치 파일 대신 새 바로 가기 위에 -.dll또는 -.ax파일을 끌어다 놓습니다 .

그게 다야 . COPY 대신 MOVE UAC 관련 후속 시도의 실패를 방지 하기로 선택했습니다 . 성공적으로 등록한 다음 원본 라이브러리 ( -.dll 또는 ) 파일 을 삭제해야 -.ax합니다.

이전 패스에 의해 시스템 폴더 ( C:\Windows\System32 또는 ) 에 복사 된 복사본에 대해 걱정하지 마십시오C:\Windows\SysWOW64 . 배치 파일을 실행할 때마다 덮어 쓰게됩니다.

잘못된 배치 파일을 실행하지 않는 한 , 적절한 배치 파일을 실행하기 전에 잘못된 시스템 폴더 ( C:\Windows\System32 또는 C:\Windows\SysWOW64 )에 만들어진 복사본을 삭제하고 싶을 것입니다 .

  • 디렉터리 위치를 완전히 지정하여 Windows가 등록 할 올바른 라이브러리 파일을 선택하도록 도와주세요.

    1. 올바른 배치 파일에서 시스템 폴더 경로를 복사하십시오.
      • 64 비트 인 경우 : C:\Windows\System32
      • 32 비트 인 경우 : C:\Windows\SysWOW64
    2. 다음 줄에 붙여 넣어 %nx1
      • 64 비트 인 경우 : regsvr32 "C:\Windows\System32\%nx1"
      • 32 비트 인 경우 : regsvr32 "C:\Windows\SysWOW64\%nx1"
        • 따옴표 안에 경로 붙여 넣기
        • %nx1시스템 폴더 경로 와 분리 되도록 백 슬래시 삽입
      • 또는 ...

  • 이 Shotgun 배치 파일을 실행하면 다음 작업이 수행됩니다 (순서대로).

    1. 중단 된 등록 프로세스 정리 수행
      • 도서관 파일에 의해 완료된 등록 절차를 되돌립니다.
      • 시스템 폴더에 저장된 라이브러리 파일의 사본을 삭제하십시오.
      • 이 시점에서 배치 파일을 종료 할 수 있도록 일시 중지합니다 (원하는 경우 다른 파일을 실행).
    2. 라이브러리 파일에 64 비트 설치 시도
      • 라이브러리 파일을 다음으로 복사하십시오. C:\Windows\System32 .
      • 라이브러리 파일을 64 비트 프로세스로 등록하십시오.
      • 이 시점에서 배치 파일을 종료 할 수 있도록 일시 중지합니다.
    3. 64 비트 설치 실행 취소
      • 라이브러리 파일 등록을 64 비트 프로세스로 되돌립니다.
      • 에서 라이브러리 파일을 삭제하십시오 C:\Windows\System32.
      • 이 시점에서 배치 파일을 종료 할 수 있도록 일시 중지합니다 (원하는 경우 다른 파일을 실행).
    4. 라이브러리 파일에 32 비트 설치 시도
      • 라이브러리 파일을 다음으로 복사하십시오. C:\Windows\SystemWOW64
      • 라이브러리 파일을 32 비트 프로세스로 등록하십시오.
      • 이 시점에서 배치 파일을 종료 할 수 있도록 일시 중지합니다.
    5. 라이브러리 파일의 등록되지 않은 원본 사본 삭제

Run as administrator박쥐 파일에 대한 바로 가기를 만들 때 회색으로 표시됩니다. 관리자로 로그인했습니다. 또한, %nx1또는 %n1?
Jon Grah

3

관리자가하는로 윈도우 7 로깅의 차이가 되지는 . 관리자로 로그온하면 관리자로 프로그램을 실행할 때와 동일한 권한이 부여 .

시작-모든 프로그램-액세서리로 이동합니다. 명령 창을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하십시오. 이제 다음을 통해 dll을 정상적으로 등록하십시오. regsrvr32 xxx.dll


3

이 작업을 수행하는 동안 오류 코드 0x80040201이 표시되면 오류 코드 0x80040201로 실패한 DllRegisterServer 의 해결 방법을 시도해보십시오. 하지만 관리자 권한으로 실행 명령 프롬프트를 열 었는지 확인하십시오 .


3

당신은 실행해야합니다 cmd.exec:\windows\system32\ by administrator

명령 : 등록 취소 * .dll 파일

regsvr32.exe /u C:\folder\folder\name.dll

등록 용 * .dll 파일

regsvr32.exe C:\folder\folder\name.dll

2

regsvr32와 관련된 혼란의 일부는 64 비트 창에서 이름과 경로가 변경되지 않았지만 이제 64 비트 DLL을 등록한다는 것입니다. 32 비트 regsvr32는 64 비트 응용 프로그램을 나타내는 이름 인 SysWOW64에 있습니다. 그러나 이름에서 WOW64는 Windows 64의 Windows 또는 Windows 64 비트의 Windows 32 비트를 의미합니다. 이런 식으로 생각하면 이름은이 문맥에서 혼란 스럽지만 의미가 있습니다.

MSDN 블로그에서 원본 소스를 찾을 수 없지만이 Wikipedia 기사 http://en.wikipedia.org/wiki/WoW64 에서 참조됩니다 .


1

Win7 x64 컴퓨터에서이 문제를 해결하는 방법은 다음과 같습니다.

1-오류 메시지 :

"CoCreateInstance () 실패 Plkease 레지스트리 항목 CLSID {F088EA74-2E87-11D3-B1F3-00C0F03C37D3}를 확인하고 관리자로 로그인했는지 확인하십시오."

2-수정 절차 :

  • cmd / RightMouse 시작 / 입력 cmd.exe를 클릭하고 "관리자 권한으로 실행"을 선택합니다.
  • 입력 : regsvr32 / s C : \ Program Files \ Autodesk \ 3ds Max Design 2015 \ atl.dll regsvr32 / s C : \ Program Files \ Autodesk \ 3ds Max Design 2015 \ MAXComponents.dll
  • Win 7을 다시 시작하고 다시 사업을 시작하십시오!

도움이 되었기를 바랍니다 !

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.