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; } }