Beispiel #1
0
const std::string& getInstallDirectory() {
	static string installDir;
	if(installDir.empty()) {
		installDir = getRegString(REG_KEY_PATH, "InstallPath");
		if(installDir.empty()) {
			messageErrorAndExit("Could not read the install location from the registry.\nMake sure to extract the downloaded files to a suitable location and run GeDoSaToTool.exe");
		}
	}
	return installDir;
}
// ------------------------------------------
// Global Functions
// ------------------------------------------
LONG RegisterAsioDriver (CLSID clsid,char *szdllname,char *szregname,char *szasiodesc,char *szthreadmodel)
{
    HMODULE			hMod;
    char			szDLLPath[MAX_PATH_LEN];
    char			szModuleName[MAX_PATH_LEN];
    char			szregpath[MAX_PATH_LEN];
    char			szclsid[CLSID_STRING_LEN];
    LPOLESTR		wszCLSID = NULL;
    BOOL			newregentry = FALSE;
    LONG			rc;

    // create HKEY_LOCAL_MACHINE\SOFTWARE\ASIO key
    HKEY hKey;
    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\ASIO",0,KEY_ALL_ACCESS,&hKey)!=ERROR_SUCCESS)
    {
        RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\ASIO",&hKey);
    }
    RegCloseKey(hKey);

    hMod = GetModuleHandle(szdllname);
    if (!hMod) return ERRSREG_MODULE_NOT_FOUND;
    szModuleName[0] = 0;
    GetModuleFileName(hMod,szModuleName,MAX_PATH_LEN);
    if (!szModuleName[0]) return ERRSREG_MODPATH_NOT_FOUND;
    CharLower((LPTSTR)szModuleName);

    rc = (LONG)StringFromCLSID(clsid,&wszCLSID);
    if (rc != S_OK) return ERRSREG_STRING_FROM_CLSID;
    rc = (LONG)WideCharToMultiByte(CP_ACP,0,(LPWSTR)wszCLSID,-1,szclsid,CLSID_STRING_LEN,0,0);
    if (!rc) return ERRSREG_CHAR_TO_MULTIBYTE;

    sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid);
    rc = findRegPath(HKEY_CLASSES_ROOT,szregpath);
    if (rc) {
        sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_CLSID,szclsid,SZREGSTR_INPROCSERVER32);
        getRegString (HKEY_CLASSES_ROOT,szregpath,0,(LPVOID)szDLLPath,MAX_PATH_LEN);
        CharLower((LPTSTR)szDLLPath);
        rc = (LONG)strcmp(szDLLPath,szModuleName);
        if (rc) {
            // delete old regentry
            sprintf(szregpath,"%s",SZREGSTR_CLSID);
            deleteRegPath(HKEY_CLASSES_ROOT,szregpath,szclsid);
            newregentry = TRUE;
        }
    }
    else newregentry = TRUE;

    if (newregentry) {
        // HKEY_CLASSES_ROOT\CLSID\{...}
        sprintf(szregpath,"%s",SZREGSTR_CLSID);
        createRegPath (HKEY_CLASSES_ROOT,szregpath,szclsid);
        // HKEY_CLASSES_ROOT\CLSID\{...} -> Description
        sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid);
        createRegStringValue(HKEY_CLASSES_ROOT,szregpath,0,szasiodesc);
        // HKEY_CLASSES_ROOT\CLSID\InProcServer32
        sprintf(szregpath,"%s\\%s",SZREGSTR_CLSID,szclsid);
        createRegPath (HKEY_CLASSES_ROOT,szregpath,SZREGSTR_INPROCSERVER32);
        // HKEY_CLASSES_ROOT\CLSID\InProcServer32 -> DLL path
        sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_CLSID,szclsid,SZREGSTR_INPROCSERVER32);
        createRegStringValue(HKEY_CLASSES_ROOT,szregpath,0,szModuleName);
        // HKEY_CLASSES_ROOT\CLSID\InProcServer32 -> ThreadingModel
        createRegStringValue(HKEY_CLASSES_ROOT,szregpath,SZREGSTR_THREADINGMODEL,szthreadmodel);
    }

    // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO
    sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO);
    rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath);
    if (rc) {
        sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO,szregname);
        rc = findRegPath(HKEY_LOCAL_MACHINE,szregpath);
        if (rc) {
            sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO);
            deleteRegPath(HKEY_LOCAL_MACHINE,szregpath,szregname);
        }
    }
    else {
        // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO
        sprintf(szregpath,"%s",SZREGSTR_SOFTWARE);
        createRegPath (HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_ASIO);
    }

    // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\<szregname>
    sprintf(szregpath,"%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO);
    createRegPath (HKEY_LOCAL_MACHINE,szregpath,szregname);

    // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\<szregname> -> CLSID
    // HKEY_LOCAL_MACHINE\SOFTWARE\ASIO\<szregname> -> Description
    sprintf(szregpath,"%s\\%s\\%s",SZREGSTR_SOFTWARE,SZREGSTR_ASIO,szregname);
    createRegStringValue(HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_CLSID,szclsid);
    createRegStringValue(HKEY_LOCAL_MACHINE,szregpath,SZREGSTR_DESCRIPTION,szasiodesc);

    return 0;
}
Beispiel #3
0
const bool getUseBlacklist() {
	return getRegString(REG_KEY_PATH, "UseBlacklist") == "True";
}
Beispiel #4
0
void Ez80::printReg(unsigned int num,unsigned int size)
{
  DEBUG_OUT<<getRegString(num,size);
}