Что нового

Чтения данных из реестра

Атос

Новичок
Сообщения
85
Репутация
0
Привет.
Мне нужно читать данные из системного реестра.

Я создавал свой скрипт на 32-битной системе. Он читает ключи и параметры реестра.
В 32-й системе пути до ключей имеют такой вид.

Код:
HKLM\SOFTWARE\Classes\.7z
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.7z

А что будет происходить, когда скрипт будет запускаться на 64-битной машине?
Ведь там пути до ключей имеют такой вид.

Код:
HKLM64\SOFTWARE\Classes\.7z
HKEY_LOCAL_MACHINE64\SOFTWARE\Classes\.7z

Как мне сделать так, чтобы скрипт мог прочитать ключ, независимо от разрядности?
 

Tyr

Новичок
Сообщения
43
Репутация
4
я в своих скриптах пользую такую вот конструкцию:
Код:
$7z = StringReplace(RegRead('HKLM\Software\7-Zip','Path')&'\','\\','\') & '7z.exe'
If $7z = "\7z.exe" Then 
$7z = StringReplace(RegRead('HKLM64\Software\7-Zip','Path')&'\','\\','\') & '7z.exe'
elseIf $7z = "\7z.exe" Then 
MsgBox(4096, '7zip в системе не учтановлен', 'Рекомендуем версию старше 92500')
Exit
EndIf

Так же проверяю версию в реестре т.к. не все команды работают в старой версии, вот тоже пример для команды sdel
Код:
$ver = StringReplace(FileGetVersion($7z),'.','')
_FileWriteLog(@ScriptDir & "\Example.log", "Текст 2") ; Записывает в лог-файл передавая путь.
If $ver > 92500 Then $ArchOptions &= ' -sdel'
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Пример
Код:
Global $sPath, $sHKLM = "HKLM"

If @OSArch <> "X86" Then $sHKLM &= 64
$sPath = RegRead($sHKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion", "ProgramFilesDir")
MsgBox(0, "Сообщение", $sHKLM & "\SOFTWARE\Microsoft\Windows\CurrentVersion: " & $sPath)
 
Автор
А

Атос

Новичок
Сообщения
85
Репутация
0
Так у них точно разные пути к кустам реестра?
Или может быть такое, что некоторые ключи с 32-ого читаются, а некоторые с 64-ого?
В 64-ой нет же таких путей HKLM\Software\7-Zip?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Атос, справка и проверяйте что вам нужно
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Атос, ну тогда доверяйте справке
Скриншот
69a5f6981404.png
 
Верх