VC++ 등록 DLL
VC++ 등록 DLL
1.dll 등록
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
//RegistryDll DLL, DLL , (TRUE )。
BOOL RegistryDll(CString& szDllPath)
{
if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
{
wprintf(L" %s , : !\r
", szDllPath);
// , OutputDebugString
return FALSE;
}
LRESULT (CALLBACK* lpDllEntryPoint)();
HINSTANCE hLib = LoadLibrary(szDllPath);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
return FALSE;
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
BOOL bRet = FALSE;
if (lpDllEntryPoint != NULL)
{
HRESULT hr = (*lpDllEntryPoint)();
bRet = SUCCEEDED(hr);
if (FAILED(hr))
{
CString szErrMsg;
if (GetErrMessage(hr, szErrMsg))
{
wprintf(L" %s , :%s\r
", szDllPath, szErrMsg);
}
else
{
wprintf(L" %s , , , :x%08x\r
", szDllPath, hr);
}
}
}
FreeLibrary(hLib);
return bRet;
}
2. dll 등록 거부
//UnRegistryDll은 DLL을 반등록하는 데 사용되며, 매개 변수는 DLL의 전체 경로이며, 반환 값은 등록이 성공했거나 실패했음을 의미한다(TRUE는 성공이다).
BOOL UnRegistryDll(CString& szDllPath)
{
if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
{
lprintf(L "%s 파일을 반등록할 때 오류가 발생했습니다. 이 파일은 존재하지 않습니다!\r",szDllPath).
return FALSE;
}
LRESULT (CALLBACK* lpDllEntryPoint)();
HINSTANCE hLib = LoadLibrary(szDllPath);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
return FALSE;
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllUnregisterServer");
BOOL bRet = FALSE;
if (lpDllEntryPoint != NULL)
{
HRESULT hr = (*lpDllEntryPoint)();
bRet = SUCCEEDED(hr);
if (FAILED(hr))
{
CString szErrMsg;
if (GetErrMessage(hr, szErrMsg))
{
lprintf(L "%s 파일을 반등록할 때 오류 발생:%s\r",szDllPath,szErrMsg);
}
else
{
lprintf(L "%s 파일을 반등록할 때 오류가 발생했지만 오류 정보를 얻을 수 없습니다. 오류 코드는 x%08x\r",szDllPath,hr)입니다.
}
}
}
FreeLibrary(hLib);
return bRet;
} 출처 -
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
#include <Shlwapi.h>
#pragma comment(lib, "Shlwapi.lib")
//RegistryDll DLL, DLL , (TRUE )。
BOOL RegistryDll(CString& szDllPath)
{
if (!(PathFileExists(szDllPath) && (!PathIsDirectory(szDllPath))))
{
wprintf(L" %s , : !\r
", szDllPath);
// , OutputDebugString
return FALSE;
}
LRESULT (CALLBACK* lpDllEntryPoint)();
HINSTANCE hLib = LoadLibrary(szDllPath);
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
return FALSE;
(FARPROC&)lpDllEntryPoint = GetProcAddress(hLib, "DllRegisterServer");
BOOL bRet = FALSE;
if (lpDllEntryPoint != NULL)
{
HRESULT hr = (*lpDllEntryPoint)();
bRet = SUCCEEDED(hr);
if (FAILED(hr))
{
CString szErrMsg;
if (GetErrMessage(hr, szErrMsg))
{
wprintf(L" %s , :%s\r
", szDllPath, szErrMsg);
}
else
{
wprintf(L" %s , , , :x%08x\r
", szDllPath, hr);
}
}
}
FreeLibrary(hLib);
return bRet;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.