로컬 컴퓨터에 설치된 MDAC의 버전을 확인하는 코드이다. from_string 함수는 그저 문자열로 표현된 버전 번호를 숫자로 변환하기 위한 함수일 뿐이다. 소스 코드에 참고한 문서의 링크를 적어놨다.
// REFERENCE: codeguru.com/forum/showthread.php?t=231054
template <class T>
bool from_string(T& t, const std::wstring& s, std::ios_base& (*f)(std::ios_base&))
{
std::wistringstream iss(s);
return !(iss >> f >> t).fail();
}
// REFERENCE: support.microsoft.com/kb/301202
BOOL MDACVersionCheck()
{
HKEY hKey;
LONG lRet;
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\DataAccess"), 0, KEY_QUERY_VALUE, &hKey );
if( lRet != ERROR_SUCCESS )
return FALSE;
const DWORD BUFSIZE = 1024;
TCHAR szFullInstallVer[BUFSIZE];
DWORD dwBufLen = BUFSIZE * sizeof(TCHAR);
lRet = RegQueryValueEx( hKey, TEXT("FullInstallVer"), NULL, NULL, (LPBYTE) szFullInstallVer, &dwBufLen);
RegCloseKey( hKey );
if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE*sizeof(TCHAR)) )
return FALSE;
float version = 0;
from_string<float>(version, static_cast<TCHAR*>(szFullInstallVer), std::dec);
if( version < 2.7 )
return FALSE;
return TRUE;
}
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.