소프트웨어 녹화 등록 DLL

2674 단어
몇몇 프로그램 집합 DLL을 등록해야 하는데, 등록한 후에 무슨 일이 일어났는지, 아마도 매우 드물게 DLL을 시스템 디렉터리에 복사했는지 아는 사람이 없을 것이다.
DLL을 등록하려면 regsvr32 명령이 필요합니다. 구체적인 도움말은regsvr32/?
DLL을 등록하는 데 어떤 문제가 발생했습니까?레지스트리 HKEYLOCAL_MACHINE\SOFTWARE\Classes\CLSID\, 그럼 HKEYLOCAL_MACHINE\SOFTWARE\Classes\CLSID\밑에 있는 모든 게 DLL이네요.
아니, SVN의 클라이언트 도구인 Tortoise SVN을 설치하면 전혀 그렇지 않다는 것을 알 수 있다.Tortoise SVN은 많은 Common Files\Tortoise Overlays 아래의 그림도 HKEYLOCAL_MACHINE\SOFTWARE\Classes\CLSID\, 그런데 이 두 가지는 등록표에서 어떤 차이가 있습니까?
차이점은 대응하는 DLL 키 밑에 InprocServer32가 많아졌다는 것이다. 그것은regsvr32를 통과하지 않아도 DLL을 등록할 수 있는 것이 아니냐는 것이다. 내가 win7에서의 실험을 통해 할 수 있다. 만약에 DLL 자신과 다른 GUID를 사용하면 성공할 수 있느냐 없느냐는 것이다. 나는 실험을 하지 않았다.
예를 들어 눌러진 DLL을 등록하면 아래의 세 개의 등록표 수정 문구가 DLL을 등록하는 임무를 완성할 수 있다. 물론 전제 조건은 DLL의 GUID를 알아야 한다는 것이다. 즉,regsvr32가 DLL을 등록하면 등록표에 세 개의 기록을 추가한 것이다.
 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585" /ve   /d "HaoZip Shell Extension"  /f
 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585}\InprocServer32" /ve   /d "%cd%\HaoZipExt.dll"  /f
 reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{5FED836A-C96C-4d88-A91E-F63F07726585}\InprocServer32" /v "ThreadingModel"   /d "Apartment"  /f
 
 
regsvr32 HaoZipExt.dll

일부 DLL 등록 후 HKEY 뿐만 아니라LOCAL_MACHINE\SOFTWARE\Classes\CLSID\, 등록표의 다른 위치를 수정할 수 있으므로 등록표 문구를 직접 사용하여 DLL을 등록하는 것을 권장하지 않습니다.
예를 들어 텐센트의 등록이 필요한 DLL은 등록표를 다음과 같은 위치로 수정할 수 있다
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\ HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\
내 분석을 통해 시스템 폴더 아래의 시스템 32에 파일을 복사하지 않았습니다. 적어도 win7에는 파일이 없습니다.현재 질문 DLL의 GUID는 등록할 때 시스템에서 생성된 것입니까?아니면 DLL 중에?
프로그램을 쓴 사람들은 모두 GUID가 DLL에서 등록할 때 생성된 것이 아니라는 것을 안다. 즉, 특정한 고정된 DLL에 대해 DLL을 다시 생성하지 않으면 GUID는 몇 번을 등록하든 바뀌지 않는다는 것이다.물론 DLL을 다시 컴파일하면 변경될 수 있습니다.
테스트를 통해 알 수 있듯이 Regsvr32를 통해 DLL을 등록하는 것은 등록표에 HKEYLOCAL_MACHINE\SOFTWARE\Classes\CLSID\아래에 등록표를 썼는데 관건은 아래에 InprocServer 32항이 추가되었다는 것이다
시스템 파일에 파일이 복사되지 않았으며 GUID는 DLL에 저장된 것이지 등록할 때 생성된 것이 아닙니다.
또한 등록해야 하는 DLL은 사실com입니다. 일부 함수를 사용하면 곳곳에서 다음과 같은 4개의 함수를 내보낼 수 있습니다. llCanUnloadNow, DllGetClassObject, DllRegisterServer, DllUnregisterServer
레지스트리에서 HKEYLOCAL_MACHINE\SOFTWARE\Classes\CLSID\아래에 상응하는 등록 정보가 있는데 관건은 HKEY 를 포함하는 것이다LOCAL_MACHINE\SOFTWARE\Classes\CLSID\DLLGUID\InprocServer32
주의: 주로 등록된 DLL은 반드시 DLL을 접미사로 하는 것이 아니라 다른 접미사를 사용할 수도 있다. 예를 들어 ocx는 매우 흔히 볼 수 있는 등록해야 하는 DLL이다. 공식적인 측면에서 볼 때 등록해야 하는 DLL은 모두COM이고 구체적으로COM 관련 자료를 조회할 수 있다.
기사는 전재를 환영하지만, 작자 정보는 보류해 주십시오.
xuexiaodong2009

좋은 웹페이지 즐겨찾기