Last Updated 2003/11/17
Programming Tips Windows  索 引 
プロダクトIDなどの取得
2003/11/17

プロダクトID,オーナー名の取得を取得するにはレジストリを参照する.

#include <winreg.h>

    char SubKey[200] = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion";
    CString wk00 = "TEST";
    CString PrID = "プロダクトID\n";
    CString ReOwner ="オーナー名\n";
    HKEY hKey = HKEY_LOCAL_MACHINE;
    PHKEY pResult;
    DWORD dwindex = 0;
    long pErrCode;
    pErrCode = RegOpenKey(hKey ,SubKey, pResult);
    if( pErrCode == ERROR_SUCCESS ) {
        hKey = *pResult;
        unsigned char WkCr0[200];         // プロダクトIDその他の帰り値
        unsigned long VlName , lpRv, lpData ;
        DWORD pType = 0;
        for(dwindex = 0; dwindex < 99; dwindex++) {
            VlName = sizeof SubKey;
            lpData = sizeof WkCr0;
            pErrCode = RegEnumValue(hKey , dwindex, SubKey , &VlName, &lpRv, &pType, WkCr0, &lpData);
            if( pErrCode == ERROR_SUCCESS) {
                wk00 = SubKey;
                if( wk00  == "ProductId")
                    PrID = PrID + WkCr0;///プロダクトID
                if( wk00  == "RegisteredOwner")
                    ReOwner = ReOwner + WkCr0;///オーナー名
            } else {
                break;
            }
        }
    } else {
        MessageBox( "オープンエラー" );
    }
    MessageBox( PrID );
    MessageBox( ReOwner );


直接取得するには以下.

  HKEY reg;
  RegOpenKeyEx(HKEY_LOCAL_MACHINE,
               "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
               0,
               KEY_QUERY_VALUE,
               &reg);

  DWORD type = REG_SZ;
  char value[64];
  DWORD size;

  RegQueryValueEx(reg, "ProductId", 0, &type, (LPBYTE)value, &size);


参照
前後のTips
プロダクトIDなどの取得

DSS ProgrammingTipsCGI Ver2.02