Войти

Показать полную графическую версию : [решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?


Страниц : 1 2 [3]

proxy
21-06-2009, 23:59
а как вот такой вот reg файл, и не надо слешей:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\DashSignature\Knagalis]
"X2"=hex(2):56,00,4d,00,4b,00,4a,00,47,00,4e,00,44,00,49,00,44,00,4e,00,57,00,4c,00,44,00,4d,00,4b,00,4a ,00,47,00,4e,00,44,00,49,00,44,00,4e,00,57,00,4c,00,44,00,00,00

после выполнения данного reg файла, в реестр, записалось значение: VMKJGNDIDNWLDMKJGNDIDNWLD, тип величины: REG_MULTI_SZ

Вот такой же вариант как понимаю устроит?? ))

proxy
22-06-2009, 00:24
и вот такой вот получается скрипт:

Opt('MustDeclareVars', 1)

Local $sRegKey, $sSerial, $i, $sSerialResult
Local $sFileContent, $sRegVSTs, $sRegFile, $hFileOpen

$sRegKey = 'HKEY_CURRENT_USER\Software\DashSignature\Knagalis'
$sSerial = RegRead($sRegKey, 'SN')

For $i=1 To StringLen($sSerial)
$sSerialResult &= Hex(Asc(StringMid($sSerial, $i, 1)), 2) & ',00,'
Next
$sSerialResult = 'hex(2):' & $sSerialResult
If StringRight($sSerialResult, 1) == ',' Then $sSerialResult = StringTrimRight($sSerialResult, 1)

$sFileContent = _
'Windows Registry Editor Version 5.00' & @CRLF & @CRLF & _
'[' & $sRegKey & ']' & @CRLF & _
'"SN"=' & $sSerialResult & @CRLF & @CRLF

Switch @OSArch
Case 'x86'
$sRegVSTs = 'HKLM\Software\VST'
Case 'x64'
$sRegVSTs = 'HKLM\Software\Wow6432Node\VST'
EndSwitch
$sRegFile = RegRead($sRegVSTs, 'VSTPluginsPath') & '\Knagalis\Knagalis.reg'

$hFileOpen = FileOpen($sRegFile, 8+2)
FileWrite($hFileOpen, $sFileContent)
FileClose($hFileOpen)

FileSetAttrib($sRegFile, '-RASHNOT', 0)
FileSetTime($sRegFile, '20010101000000', 0)
FileSetTime($sRegFile, '20010101000000', 1)
FileSetTime($sRegFile, '20010101000000', 2)

semiono
22-06-2009, 19:03
тип величины: REG_MULTI_SZ »
Ты оговорился, REG_EXPAND_SZ .
Предлагаешь без слешей? Хорошо, я знаю что без них можно.
Это майкрософт придумали для красоты переносы строк, поэтому фиг с ними.
Там я писал уже, что на REG_SZ заменил. Но в других случаях это нельзя делать,
ключи содержащие переменные пути, напр. %SystemDrive% не будут работать
в системе через обычный REG_SZ. Поэтому сам тип лучше соблюдать где встречается.

Спасибо, ты помимо всего ещё и организовал лучше мой скрипт, хотя я ещё не проверял,
но красивше стало, я сам даже не втыкаюсь как пральна всякие Local юзать :)
А что свитчеры опустил, так лучше? Я хочу чтоб x86_x64 на весь код влияло глобально,
так как часто в программах это нужно по всему коду. Я вообще-то делаю как бы шаблон,
чтобы его перекидывать на много приложений, чтоб меньше потом писать...
Щас почитаю, подумаю над этим.
Hex(Asc(StringMid »
А у меня мысль была знаешь какая, а что если получить строку UNICODE в автиоите
и потом её как-то заполнить RegExp-ами, чтоб между символами запятые разделители вставить.
Это реально? Тогда можно даже и не ascii контент считывать в регфайл, любой bin- контент
:)

semiono
22-06-2009, 19:24
proxy, поправочка моя
'"SN"=' & $sSerialResult & ",00,00" & @CRLF & @CRLF
Ноль терминейтед стринг, это как правило во всяких бинарных записях реестра. ;-
Но так всё очень превосходно! :)
Пора тему закруглить, и завести новую, сугубо по параметрам, без всяких "программ"

proxy
22-06-2009, 20:51
а что если получить строку UNICODE в автиоите
вопрос в том - как ? )))

организовал лучше мой скрипт
просто разложил по порядку выполнения, но можно как угодно конечно - и само собой как удобней тебе - в первую очередь, ну и главное, что бы все работало правильно ))

Ноль терминейтед стринг, это как правило во всяких бинарных записях реестра »
ну надо-так надо ))

в принципе: Hex(Asc(StringMid - тут и получаем юникодовское кодирование..........




© OSzone.net 2001-2012