라이센스 찾는코드
BOOL RequestLicenseKey(BSTR& bstrLicenseKey, CString strProgID) { //USES_CONVERSION; LPCLASSFACTORY2 pClassFactory; CLSID clsid; BOOL bValidKeyReturned = FALSE; // Get the CLSID of the specified ProgID. if (SUCCEEDED(CLSIDFromProgID(OLESTR(strProgID), &clsid))) { // Create an instance of the object and query it for // the IClassFactory2 interface. if (SUCCEEDED(CoGetClassObject(clsid, CLSCTX_INPROC_SERVER, NULL,IID_IClassFactory2, (LPVOID *)(&pClassFactory)))) { LICINFO licinfo; // Check to see if this object has a runtime License key. if (SUCCEEDED(pClassFactory->GetLicInfo(&licinfo))) { if (licinfo.fRuntimeKeyAvail) { HRESULT hr; // The object has a runtime License key, so request it. hr = pClassFactory->RequestLicKey(0, &bstrLicenseKey); if (SUCCEEDED(hr)) { if(bstrLicenseKey == NULL)bstrLicenseKey = ::SysAllocString(L""); else // You have the license key. bValidKeyReturned = TRUE; } else // Requesting the License key failed. switch(hr) { case E_NOTIMPL: bstrLicenseKey = ::SysAllocString(L"
"); break; case E_UNEXPECTED: bstrLicenseKey = ::SysAllocString(L" "); break; case E_OUTOFMEMORY: bstrLicenseKey = ::SysAllocString(L" "); break; case CLASS_E_NOTLICENSED: bstrLicenseKey = ::SysAllocString( L" "); break; default: bstrLicenseKey = ::SysAllocString(L" "); } } else bstrLicenseKey = ::SysAllocString(L" "); } else bstrLicenseKey = ::SysAllocString(L" "); // Make sure you release the reference to the class factory. pClassFactory->Release(); } else bstrLicenseKey = ::SysAllocString(L" "); } else bstrLicenseKey = ::SysAllocString(L" "); // Return a BOOL specifying whether or not you were able to get a // valid license key. return bValidKeyReturned; } 복잡한 ActiveX Control 라이센스 간단히 얻기
2.1 요약
윈도우에서 만든 ActiveX Control을 인터넷 상에서 배포하기 위해서는 컨트롤에 대한 라이센스가 있어야 합니다.
하지만 몇가지 단계를 거치게 되어 있어 처음 접하게 되면 쉽지 않음을 느끼게 되는데
그런 분들을 위해서 자동 실행 파일을 만들어 보았습니다.
2.2 본문
준비물 : ActiveX Control 파일 ( dll), 배포할 atl.dll 파일, inf 설치 파일
첨부되어 있는 파일을 보시면 GenCab.bat와 ClearAll.bat 라는 파일이 있습니다.전자는 라이센스가 포함되어 있는 cab 파일을 생성하는 자동 실행 파일이며,
후자는 생성된 모든 일련의 과정을 취소하는 자동 실행파일입니다.
예제
in << GenCab.bat >>
setreg 1 true
makecert -n "CN=4CSoft" -sv %1.pvk %1.cer
cert2spc %1.cer %1.spc
cabarc -s 6144 n %1.cab atl.dll %1.dll %1.inf
signcode -spc %1.spc -v %1.pvk -n "%1" %1.cab
in << ClearAll.bat >>
del %1.spc
del %1.pvk
del %1.cer
del %1.cab
regsvr32 /u %1.dll
사용방법은 자동 실행 파일의 첫번재 인자로 Dll 이름을 넣어 주시면 됩니다. 예를 들어.
c:\>GenCab TestDll
이렇게 하시면 해당 폴더에 많은 파일들이 생성된것을 볼수 있고, cab 파일만 남겨놓고 나머지를 지우고자 할때는
c:\>ClearAll TestDll
처럼 하시면 됩니다
복잡한 ActiveX Control 라이센스 간단히 얻기
2.1 요약
윈도우에서 만든 ActiveX Control을 인터넷 상에서 배포하기 위해서는 컨트롤에 대한 라이센스가 있어야 합니다.
하지만 몇가지 단계를 거치게 되어 있어 처음 접하게 되면 쉽지 않음을 느끼게 되는데
그런 분들을 위해서 자동 실행 파일을 만들어 보았습니다.
2.2 본문
준비물 : ActiveX Control 파일 ( dll), 배포할 atl.dll 파일, inf 설치 파일
첨부되어 있는 파일을 보시면 GenCab.bat와 ClearAll.bat 라는 파일이 있습니다.전자는 라이센스가 포함되어 있는 cab 파일을 생성하는 자동 실행 파일이며,
후자는 생성된 모든 일련의 과정을 취소하는 자동 실행파일입니다.
예제
in << GenCab.bat >>
setreg 1 true
makecert -n "CN=4CSoft" -sv %1.pvk %1.cer
cert2spc %1.cer %1.spc
cabarc -s 6144 n %1.cab atl.dll %1.dll %1.inf
signcode -spc %1.spc -v %1.pvk -n "%1" %1.cab
in << ClearAll.bat >>
del %1.spc
del %1.pvk
del %1.cer
del %1.cab
regsvr32 /u %1.dll
사용방법은 자동 실행 파일의 첫번재 인자로 Dll 이름을 넣어 주시면 됩니다. 예를 들어.
c:\>GenCab TestDll
이렇게 하시면 해당 폴더에 많은 파일들이 생성된것을 볼수 있고, cab 파일만 남겨놓고 나머지를 지우고자 할때는
c:\>ClearAll TestDll
처럼 하시면 됩니다
'개발언어 > c++' 카테고리의 다른 글
ATL, _com_error 클래스와 HRESULT 에러 처리,error (0) | 2016.07.18 |
---|---|
VB에서 VC++ 상속 받기 혹은 추상화 하기 (0) | 2016.07.18 |
Visual Basic 에서 사용하는 Winsock 컨트롤 내부 구현 (0) | 2016.07.18 |
현재 실행되는 모든 프로세스의 동작 상태 체크하기 (0) | 2016.07.18 |
템플릿 배열 사용하기 (0) | 2016.07.18 |