Что нового

Получить тип данных значения реестра

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
Как получить этот самый тип данных (REG_DWORD, REG_STR)

Мне кажэтся надо ковырять функцию RegQueryInfoKey, но я сапсем не знаю с какой стороны к ней подойти!
===========
Или нетЪ, RegQueryValueEx - функция более подходит из её описания
 

kzru_hunter

Осваивающий
Сообщения
144
Репутация
49
Можно получить с помощью RegRead, после использования тип записывается в @extended
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,662
Репутация
2,461
kzru_hunter [?]
Можно получить с помощью RegRead, после использования тип записывается в @extended
А для получения строкового значения, можно использовать эту функцию:

Код:
Func _RegGetExtendedType($iExtended)
	Local $aRegTypeArr[8] = [7, "REG_SZ", "REG_EXPAND_SZ", "REG_BINARY", "REG_DWORD", _
		"REG_DWORD_BIG_ENDIAN", "REG_LINK", "REG_MULTI_SZ"]
	
	For $i = 1 To 7
		If $iExtended = $i Then Return $aRegTypeArr[$i]
	Next
	
	Return "REG_SZ"
EndFunc
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,716
Ну, раз уж тут такая раздача "слонов", то вот пример с помощью WinAPI, что собственно изначально и спрашивалось. Напомню, что AutoIt поддерживает только 5 из 11 типов данных в реестре, среди которых, кстати, почему-то нет REG_NONE.

Код:
#Include <WinAPIEx.au3>

Global $hKey, $tData

$hKey = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, 'SOFTWARE\AutoIt v3\AutoIt')
$tData = DllStructCreate('wchar[260]')
_WinAPI_RegQueryValue($hKey, 'InstallDir', $tData)
ConsoleWrite('Type: ' & @extended & @CR)
ConsoleWrite('Data: ' & DllStructGetData($tData, 1) & @CR)
_WinAPI_RegCloseKey($hKey)
 
Автор
sforce5

sforce5

Олл фо ЛулзЪ
Сообщения
160
Репутация
41
А пример на API поддерживает все типы данных?
 
Верх