728x90
반응형
이 글은 C++로 작성된 CDetectDotNet
클래스를 소개하며, 이를 통해 시스템에 설치된 .NET 프레임워크의 존재 여부와 버전을 확인하는 방법을 설명합니다.
주요 기능:
-
.NET 프레임워크 존재 확인:
IsDotNetPresent()
메서드를 사용하여 시스템에 .NET 프레임워크가 설치되어 있는지 확인합니다. -
설치 경로 확인:
GetInstallRootPath()
메서드를 통해 .NET 프레임워크의 설치 루트 경로를 얻을 수 있습니다. -
CLR 버전 열거:
EnumerateCLRVersions()
메서드를 사용하여 시스템에 설치된 CLR(Common Language Runtime) 버전들을 열거할 수 있습니다.
사용 예시:
cpp
#include "DetectDotNet.h"
CDetectDotNet detect;
vector<string> CLRVersions;
cout << "Is .NET present: " << (detect.IsDotNetPresent() ? "Yes" : "No") << endl;
TCHAR szPath[300];
cout << "Root Path: " << (detect.GetInstallRootPath(szPath, 299) ? szPath : "") << endl;
cout << "Number of CLRs detected: " << (int)detect.EnumerateCLRVersions(CLRVersions) << endl;
cout << "CLR versions available:" << endl;
for (const auto& version : CLRVersions) {
cout << version << endl;
}
구현 원리:
-
.NET 프레임워크 존재 확인:
mscoree.dll
을LoadLibrary
로 로드하고,GetProcAddress
를 통해GetCORVersion
함수의 존재 여부를 확인하여 .NET 프레임워크의 설치 여부를 판단합니다. -
CLR 버전 열거: 레지스트리에서 .NET 프레임워크의 설치 루트 경로를 얻은 후, 해당 경로 내의 하위 디렉토리를 탐색하여 설치된 CLR 버전들을 확인합니다.
이 클래스는 설치 프로그램 등에서 시스템의 .NET 프레임워크 설치 상태를 확인하는 데 유용하게 활용될 수 있습니다.
728x90
반응형
'C C++' 카테고리의 다른 글
C++ 상수 포인터 (0) | 2007.05.17 |
---|---|
최대한 잘라먹기(Maximal Munch)와 컴파일러(Compiler) (2) | 2007.05.16 |
TTOF2() 함수 (0) | 2007.05.09 |
CMainFrame IDR_MAINFRAME 확장자 연결 문자열 (0) | 2007.04.26 |
GetProcAddress 과 Unicode (0) | 2007.04.14 |