로컬 컴퓨터에 설치된 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 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.