Код:
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
WIN32_FIND_DATA FoundFile;
HANDLE FileHandle;
TCHAR NETPath[MAX_PATH];
HKEY hKey;
DWORD dwSize;
char NetVersion[5]="v0.0";
if(RegCreateKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\.NETFramework",
0,
NULL,
REG_OPTION_NON_VOLATILE,
KEY_ALL_ACCESS,
NULL,
&hKey,
NULL) == ERROR_SUCCESS )
{
if(RegQueryValueEx(hKey, "InstallRoot", NULL, 0, (LPBYTE)NETPath, &dwSize) == ERROR_SUCCESS)
{
lstrcat(NETPath,"\\v*.*");
FileHandle=FindFirstFile(NETPath,&FoundFile);
do
{
FoundFile.cFileName[4]=0;
if(FoundFile.cFileName[1]>NetVersion[1] || FoundFile.cFileName[3]>NetVersion[3])
{
lstrcpy(NetVersion,FoundFile.cFileName);
}
}while(FindNextFile(FileHandle,&FoundFile));
FindClose(FileHandle);
}
else
cout<<"RegQueryValueEx: "<<GetLastError()<<endl;
RegCloseKey(hKey);
}
else
cout<<"RegCreateKeyEx(): "<<GetLastError()<<endl;
cout<<"Installed .NET Version: "<<NetVersion<<endl;
}