728x90
반응형

.NET 프레임워크 인식하기

이 글은 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.dllLoadLibrary로 로드하고, 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

+ Recent posts