MDAC 버전 확인하기

  • Post author:
  • Post category:
  • Post last modified:February 8, 2020

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