#inclib "advapi32" #Include Once "windows.bi" #Include Once "win\shlwapi.bi" /' RegRead (root,lpSubKey,lpValueName) RegWrite (root,lpSubKey,KeyName,lpValueName,dwType,lpData) RegDelete (root,lpSubKey,pszSubKey,pszValue) RegEnumKeys (root,lpSubKey,Keys()) '/ Function RegRead (root As HKEY, lpSubKey As Zstring Ptr, lpValueName As String) As String Dim value As ZString*1024 Dim l As DWORD = 1024 Dim keyHandle As HKEY RegOpenKeyEx root, lpSubKey, 0, KEY_ALL_ACCESS, @keyHandle RegQueryValueEx keyHandle, lpValueName, NULL, NULL, @value, @l RegCloseKey keyHandle Return value End Function Function RegWrite (root As HKEY, lpSubKey As Zstring Ptr, KeyName As String = "", lpValueName As String = "", dwType As Dword = REG_SZ, lpData As ZString Ptr = NULL ) As HKEY Dim As HKEY keyHandle, resultHandle RegOpenKeyEx root, lpSubKey, 0, KEY_ALL_ACCESS, @keyHandle If KeyName = "" Then RegSetValueEx keyHandle, StrPtr(lpValueName), NULL, dwType, lpData, 128 Else RegCreateKeyEx keyHandle, KeyName, NULL, NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, NULL, @resultHandle, NULL EndIf RegCloseKey keyHandle RegCloseKey resultHandle Return resultHandle End Function Function RegDelete (root As HKEY, lpSubKey As Zstring Ptr, pszSubKey As Zstring Ptr, pszValue As String = "") As Integer Dim keyHandle As HKEY RegOpenKeyEx root, lpSubKey, 0, KEY_ALL_ACCESS, @keyHandle If pszValue = "" Then SHDeleteKey keyHandle,pszSubKey Else SHDeleteValue keyHandle,pszSubKey,pszValue EndIf RegCloseKey keyHandle Return 0 End Function Function RegEnumKeys (root As HKEY, lpSubKey As Zstring Ptr, Keys() As String) As Integer Dim keyHandle As HKEY RegOpenKeyEx root, lpSubKey, 0, KEY_ALL_ACCESS, @keyHandle Dim Continued As Integer = 1 Dim i As Dword = 0 Dim lpName As Zstring*1024 Dim cchName As DWORD Dim lpcSubKeys As Integer RegQueryInfoKey keyHandle, NULL, NULL, NULL, @lpcSubKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL ReDim keys(lpcSubKeys) While Continued cchname = 1024 If RegEnumKeyEx(keyHandle, i, @lpName, @cchName,NULL,NULL,NULL,NULL) = ERROR_SUCCESS Then Keys(i) = lpName i += 1 Else Continued = FALSE Endif Wend RegCloseKey(keyHandle) Return i End Function