Exemple #1
0
static void
windowsOSVersionString(char stringbuf[], size_t stringbuflen)
{
    /* copy OS version to string buffer in 'uname -a' format */
    static const char wcv[] = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
    char windowsVersion[256] = "?";
    DWORD windowsVersionSz = sizeof(windowsVersion);
    char build[256] = "?";
    DWORD buildSz = sizeof(256);
    DWORD dwMajorVersion;
    DWORD dwMinorVersion;
    char hostname[256] = "?";
    char identifier[256] = "?";
    DWORD identifierSz = sizeof(identifier);

    dwMajorVersion = RegReadDword(HKEY_LOCAL_MACHINE, wcv,
                                  "CurrentMajorVersionNumber");
    dwMinorVersion = RegReadDword(HKEY_LOCAL_MACHINE, wcv,
                                  "CurrentMinorVersionNumber");
    if (!RegReadString(HKEY_LOCAL_MACHINE, wcv, "CurrentBuildNumber",
                       build, &buildSz))
        RegReadString(HKEY_LOCAL_MACHINE, wcv, "CurrentBuild",
                      build, &buildSz);

    gethostname(hostname, sizeof(hostname));

    RegReadString(HKEY_LOCAL_MACHINE, wcv, "ProductName", windowsVersion,
                  &windowsVersionSz);
    RegReadString(HKEY_LOCAL_MACHINE,
                  "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
                  "Identifier", identifier, &identifierSz);

    /* Output is made to look like results from uname -a */
    snprintf(stringbuf, stringbuflen, "Windows %s %d.%d.%s %s %s",
             hostname, (int)dwMajorVersion, (int)dwMinorVersion, build,
             windowsVersion, identifier);
}
void readReg() {
    TCHAR szTemp[MAX_PATH];
    DWORD dwTemp=0;
    if(OpenKey()==0) {
        for (int i=0; i<COUNT_DLG_ITEMS; i++) {
            if (RegReadStr(myDlgItems[i].szLabel, szTemp)==0)
                wsprintf(myDlgItems[i].szValue, szTemp);
            DEBUGMSG(1, (L"%s=%s\n", myDlgItems[i].szLabel, myDlgItems[i].szValue));
        }

        //g_bUseFitToScreen "FitToScreen"
        if(RegReadStr(L"FitToScreen", szTemp) == 0) {
            if(wcscmp(szTemp, L"0")==0)
                g_bUseFitToScreen=false;
            else
                g_bUseFitToScreen=true;
        }

        //g_bUseFullscreen
        if(RegReadStr(L"FullScreen", szTemp) == 0) {
            if(wcscmp(szTemp, L"0")==0)
                g_bUseFullscreen=false;
            else
                g_bUseFullscreen=true;
        }

        if(RegReadStr(L"UseMouseClick", szTemp) == 0) {
            if(wcscmp(szTemp, L"0")==0)
                bUseMouseClick=false;
            else
                bUseMouseClick=true;
        }
        //read DesktopWidth and Height
        //"DesktopWidth"=240
        //"DesktopHeight"=320
        DWORD dwDesktopWidth=240;
        DWORD dwDesktopHeight=320;

        if(RegReadDword(L"DesktopWidth", &dwDesktopWidth) == 0)
            iDesktopWidth=dwDesktopWidth;

        if(RegReadDword(L"DesktopHeight", &dwDesktopHeight) ==0)
            iDesktopHeight=dwDesktopHeight;

        DEBUGMSG(1, (L"readReg: Desktop width=%u and height=%u\n", iDesktopWidth, iDesktopHeight));

        //sAppOnExit
        if(RegReadStr(L"startOnExit", szTemp) == 0)
            wsprintf(sAppOnExit, L"%s", szTemp);
        else
            wsprintf(sAppOnExit, L"");
        DEBUGMSG(1, (L"readReg: sAppOnExit='%s'\n", sAppOnExit));

        // "execargs"="noRDPstart"
        if(RegReadStr(L"execArgs", szTemp) == 0)
            wsprintf(sExeArgs, L"%s", szTemp);
        else
            wsprintf(sExeArgs, L"");
        DEBUGMSG(1, (L"readReg: sExeArgs='%s'\n", sExeArgs));

        //ColorDepth new with version 4
        if(RegReadDword(L"ColorDepth", &dwTemp) == 0)
            dwColorDepth=dwTemp;

        //EnableDriveRedirection new with version 5
        if(RegReadDword(L"EnableDriveRedirection", &dwTemp) == 0)
            dwEnableDriveRedirection=dwTemp;

        //AudioRedirectionMode new with version 5
        if(RegReadDword(L"AudioRedirectionMode", &dwTemp) == 0)
            dwAudioRedirectionMode=dwTemp;
    }
}