Tutorijali.Net forum

Full Version: Citanje Windows Registry-a
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pozdrav svima!

Ovako,

Posto ja pisem programe u jezicima koji koriste .NET framework, trebam napisati program u C++ (Win32) koji ce se pokretati prije mog programa i provjeravati da li je .NET framework instaliran na kompjuteru na kojem se izvrsava. Znam osnove c++, nekad sam u vakat' pisao pretvarac bin::dec i dec::bin He he ...

Ovako:
- IDE mi je Dev-C++, znaci compiler je Mingw (kol'ko se ja sjecam)
- Zapisi u registry se nalaze u:
"My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy"

Pogledajte zakacenu sliku za vise detalja...

Poslije policy key-a dolazi key sa nazivom koji odgovara verziji .NETFramework-a. Meni je potrebna 2.0 verzija framework-a.

U tom key-u (2.0) treba da se nalazi String Vrijednost sa nazivom 50727. Ako se nalazi ta string vrijednost sa navedenim nazivom, onda 2.0 verzija frameworka postoji na tom kompjuter, u suprotnom ona ne postoji.

Hvala!
Rijesio sam ovu "misteriju":

Code:
#include <windows.h>
#include <iostream>
using namespace std;

int main()
{
    HKEY hKey = 0;
    char buf[255] = {0};
    DWORD dwType = 0;
    DWORD dwBufSize = sizeof(buf);
    const char* subkey = "Software\\Microsoft\\.NETFramework\\policy\\v2.0";

    if( RegOpenKey(HKEY_LOCAL_MACHINE,subkey,&hKey) == ERROR_SUCCESS)
    {
        dwType = REG_SZ;
        if( RegQueryValueEx(hKey,"50727",0, &dwType, (BYTE*)buf, &dwBufSize) == ERROR_SUCCESS)
        {
            WinExec("AutoRun.exe", SW_SHOW);
        }
        else
            cout << "can not query for key value\n";
        RegCloseKey(hKey);

    }
    else
        WinExec("dotnetfx.exe", SW_SHOW);
    cin.ignore();
      
    return 0;
}

Kod provjerava da li je instalirana 2.0 verzija .NET frameworka i ako jeste pokrece .NET aplikaciju, ako nije pokrece instalaciju .NET framework-a
Reference URL's