TYPE FileTime INT dwLowDateTime INT dwHighDateTime ENDTYPE DECLARE IMPORT,RegOpenKeyExA(hkey as Uint,subkey as string,options as int,security as int,result as pointer),INT DECLARE IMPORT,RegQueryValueExA(hkey as Uint,valuename as string,reserved as pointer,typ as pointer,keyvalue as pointer,size as pointer),INT DECLARE IMPORT,RegCloseKey(hkey as Uint),INT DECLARE IMPORT,RegCreateKeyExA(hKey AS INT,lpSubKey AS STRING,Reserved AS INT,lpClass AS STRING,dwOptions AS INT,samDesired AS INT,lpSecurityAttributes AS int,phkResult AS INT BYREF,lpdwDisposition AS INT BYREF),INT DECLARE IMPORT,RegDeleteKeyA(hKey AS Uint,SubKey AS STRING),INT DECLARE IMPORT,RegSetValueExA(hKey AS INT,lpValueName AS STRING,Reserved AS INT,dwType AS INT,lpData AS POINTER,cbData AS INT),INT DECLARE IMPORT,RegDeleteValueA(hKey:INT, lpValueName:STRING),INT DECLARE IMPORT,RegEnumKeyExA(hKey AS INT,dwIndex AS INT,lpName AS STRING,lpcbName AS POINTER,lpReserved AS INT,lpClass AS STRING,lpcbClass AS POINTER,lpftLastWriteTime AS FILETIME),INT DECLARE IMPORT,RegEnumValueA(hKey AS INT,dwIndex AS INT,lpValueName AS STRING,lpcbValueName AS POINTER,lpReserved AS INT,lpType AS POINTER,lpData AS pointer,lpcbData AS POINTER),INT DECLARE IMPORT,RegQueryInfoKeyA(INT hKey,POINTER lpClass,POINTER lpcchClass,POINTER lpReserved,POINTER lpcSubKeys,POINTER lpcbMaxSubKeyLen,POINTER lpcbMaxClassLen,POINTER lpcValues,POINTER lpcbMaxValueNameLen,POINTER lpcbMaxValueLen,POINTER lpcbSecurityDescriptor,FILETIME lpftLastWriteTime),INT declare import,RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile),LONG declare import,RegLoadKeyW (HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile),LONG $ifdef UNICODE declare import,RegLoadKey alias RegLoadKeyW (HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile),LONG $else declare import,RegLoadKey alias RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile),LONG $endif declare import,RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey),LONG declare import,RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey),LONG $ifdef UNICODE declare import,RegUnLoadKey alias RegUnLoadKeyW (HKEY hKey,LPCWSTR lpSubKey),LONG $else declare import,RegUnLoadKey alias RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey),LONG $endif SETID "HKEY_CLASSES_ROOT", 0x80000000 SETID "HKEY_CURRENT_USER", 0x80000001 SETID "HKEY_LOCAL_MACHINE", 0x80000002 SETID "HKEY_USERS", 0x80000003 SETID "HKEY_PERFORMANCE_DATA",0x80000004 SETID "HKEY_CURRENT_CONFIG", 0x80000005 SETID "HKEY_DYN_DATA", 0x80000006 SETID "KEY_ALL_ACCESS", 63 SETID "REG_SZ",1 SETID "REG_BINARY", 3 SETID "REG_DWORD", 4 Sub GetRoot(Key as string),UInt string rf UInt retval retval=0 rf=left$(Key,instr(Key,"\\")-1) select rf case "HKEY_CLASSES_ROOT" retval= @HKEY_CLASSES_ROOT case "HKEY_CURRENT_USER" retval=@HKEY_CURRENT_USER case "HKEY_LOCAL_MACHINE" retval=@HKEY_LOCAL_MACHINE case "HKEY_USERS" retval=@HKEY_USERS case "HKEY_PERFORMANCE_DATA" retval=@HKEY_PERFORMANCE_DATA case "HKEY_CURRENT_CONFIG" retval=@HKEY_CURRENT_CONFIG case "HKEY_DYN_DATA" retval=@HKEY_DYN_DATA endselect return retval EndSub Sub RegGetValue(Key as string,opt ValueName as string),string string retval,rf,ky UInt root,ret,ln,typ int getdw retval="" ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegQueryValueExA(Ret,ValueName,NULL,typ,retval,ln) if typ=4:'Dword ln=4 RegQueryValueExA(Ret,ValueName,NULL,typ,getdw,ln) retval=str$(getdw) endif endif RegCloseKey(ret) return retval EndSub Sub RegGetEntryType(Key as string,opt ValueName as string),INT string retval,rf,ky UInt root,ret,ln,typ int getdw retval="" ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegQueryValueExA(Ret,ValueName,NULL,typ,retval,ln) endif RegCloseKey(ret) return typ EndSub Sub RegDeleteValue(Key as string,opt ValueName as string),string string retval,rf,ky UInt root,ret,ln,typ int getdw retval="" ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 IF RegDeleteValueA(ret,valuename) = 0 retval = "0" ELSE retval = "1" ENDIF endif RegCloseKey(ret) return retval EndSub Sub RegSetValue(Key as string,Value as string,opt ValueName as string),int string rf,ky UInt root,ret,ln,typ int retval,tmp retval=0 tmp=0 ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) RegCreateKeyExA(GetRoot(Key),ky,0,"",0,@KEY_ALL_ACCESS,0,ret,tmp) tmp=0 ln=len(value)+1 retval=RegSetValueExA(ret,ValueName,tmp,@REG_SZ,Value,ln) RegCloseKey(ret) return retval EndSub Sub RegSetDWValue(Key as string,Value as int,opt ValueName as string),int string rf,ky UInt root,ret,ln,typ int retval,tmp retval=0 tmp=0 ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) RegCreateKeyExA(GetRoot(Key),ky,0,"",0,@KEY_ALL_ACCESS,0,ret,tmp) tmp=0 ln=4 retval=RegSetValueExA(ret,ValueName,tmp,@REG_DWORD,Value,ln) RegCloseKey(ret) return retval EndSub Sub RegCreateKey(Key as string),int string rf,ky UInt root,ret int retval,tmp,ln tmp=0 ln=255 rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) retval=RegCreateKeyExA(GetRoot(Key),ky,0,"",0,@KEY_ALL_ACCESS,0,ret,tmp) RegCloseKey(ret) return retval EndSub Sub RegDeleteKey(Key as string),int string rf,ky int retval rf=left$(Key,instr(Key,"\\")-1) ky=right$(Key,len(Key)-1-len(rf)) retval=RegDeleteKeyA(GetRoot(Key),ky) return retval EndSub Sub RegEnumKey(STRING Key,INT Index),STRING FileTime ft UInt ret,ln string rf,ky string retval String zz="" ln=255 rf=left$(Key,INSTR(Key,"\\")-1) ky=right$(Key,(len(Key)-1)-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegEnumKeyExA(ret,Index,retval,ln,NULL,zz,ln,ft) ENDIF RegCloseKey(ret) return retval EndSub Sub RegEnumEntryName(STRING Key,INT Index),string FileTime ft int getdw UINT ret,typ STRING retval string rf,ky INT ln lpClass="" ln=255 rf=left$(Key,INSTR(Key,"\\")-1) ky=right$(Key,(len(Key)-1)-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegEnumValueA(ret,Index,retval,ln,NULL,typ,NULL,NULL) ENDIF RegCloseKey(ret) return retval EndSub Sub RegCountSubKeys(STRING Key),INT FileTime ft INT ln,retval ln=255 UINT ret lpClass="" rf=left$(Key,INSTR(Key,"\\")-1) ky=right$(Key,(len(Key)-1)-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegQueryInfoKeyA(ret,lpClass,ln,NULL,retval,NULL,NULL,NULL,NULL,NULL,NULL,ft) RegCloseKey(ret) ENDIF 'Returns the number of sub-keys under this key, or 0 for error return retval EndSub Sub RegCountEntries(STRING Key),INT FileTime ft UINT ret INT ln INT retval STRING lpClass string rf,ky lpClass = "" ln=255 rf=left$(Key,INSTR(Key,"\\")-1) ky=right$(Key,(len(Key)-1)-len(rf)) if RegOpenKeyExA(GetRoot(Key),ky,0,@KEY_ALL_ACCESS,ret) = 0 RegQueryInfoKeyA(ret,lpClass,ln,NULL,NULL,NULL,NULL,retval,NULL,NULL,NULL,ft) RegCloseKey(ret) ENDIF 'Returns the number of values under this key return retval EndSub