Что нового

Существование ветки реестра

Talany

Знающий
Сообщения
136
Репутация
11
Здравствуйте!
Подскажите пожалуйста как проверить существует ли ветка реестра
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Mozilla Firefox (3.6.3)
и как захватить значение DisplayName ???

Заранее спасибо!
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
RegRead()

Смотрим справку:
Неудачно: Возвращает "" и устанавливает значение @error =

Думаю это то что Вам нужно
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Talany
Можно так попробовать:
Код:
#include <WinAPIEx.au3>
#include <Array.au3>

$sSubKey = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall'
$sSearchKey = 'AutoItv3'
$bCheck = False
$hKey = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, $sSubKey)
$aCount = _WinAPI_RegQueryInfoKey($hKey)

For $i = 0 To $aCount[0]
	$sTempKey = _WinAPI_RegEnumKey($hKey, $i)
	If StringInStr($sTempKey, $sSearchKey) Then
		$bCheck = True
		_WinAPI_RegCloseKey($hKey)
		$hKeySearch = _WinAPI_RegOpenKey($HKEY_LOCAL_MACHINE, $sSubKey & '\' & $sTempKey)
		$Count = _WinAPI_RegQueryInfoKey($hKeySearch)
		Dim $aKey[$Count[2]][3]
		For $j = 0 To $Count[2] - 1
			$aKey[$j][0] = _WinAPI_RegEnumValue($hKeySearch, $j)
			$aKey[$j][1] = RegRead('HKLM\' & $sSubKey & '\' & $sTempKey, $aKey[$j][0])
			$aKey[$j][2] = _RegValueType(@extended)
		Next
		ExitLoop
	EndIf
Next

If $bCheck Then
	_WinAPI_RegCloseKey($hKeySearch)
	_ArrayDisplay($aKey)
Else
	_WinAPI_RegCloseKey($hKey)
	MsgBox(0, '', 'NO')
EndIf

Func _RegValueType($sString)
	Local $sResume
	Switch $sString
		Case 0
			$sResume = 'REG_NONE'
		Case 1
			$sResume = 'REG_SZ'
		Case 2
			$sResume = 'REG_EXPAND_SZ'
		Case 3
			$sResume = 'REG_BINARY'
		Case 4
			$sResume = 'REG_DWORD'
		Case 5
			$sResume = 'REG_DWORD_BIG_ENDIAN'
		Case 6
			$sResume = 'REG_LINK'
		Case 7
			$sResume = 'REG_MULTI_SZ'
		Case 8
			$sResume = 'REG_RESOURCE_LIST'
		Case 9
			$sResume = 'REG_FULL_RESOURCE_DESCRIPTOR'
		Case 10
			$sResume = 'REG_RESOURCE_REQUIREMENTS_LIST'
	EndSwitch
	Return $sResume
EndFunc   ;==>_RegType

WinAPIEx.au3
 
Автор
T

Talany

Знающий
Сообщения
136
Репутация
11
Спасибо madmasles но в моём случае действительно легче использовать RegRead() и значения @error :ok:
 
Верх