Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?

Ответить
Настройки темы
[решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Цитата:
When reading a REG_MULTI_SZ key the multiple entries are separated by @LF - use with StringSplit(..., @LF) to get each entry.
Совершенно не пойму, что делать? Куда тыкать StringSplit(..., @LF) ?
Мне надо счесть корректно параметр, который REG_MULTI_SZ, разделять строки это тоже хорошо, в InnoSetup используется {break},
но это всё относительно записи, нафига это всё надо для чтения, ведь откуда известно что я считаю регридом? Ведь было бы известно,
тогда бы и читать не нужно! ?
Одним словом как читать дворд, мултисз, экспанд итп...? Бывает, кстати неизвесно вообще заранее какой тип, хотя это отдельный вопрос.

-------
Полезное сообщение


Отправлено: 22:12, 19-06-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


т.е., при чтение данных из реестра, Вы желаите указать тип считываемых данных, так?

если так, - то зачем?
помойму в справке по RegRead этого не требуется:

Цитата:
RegRead ( "keyname", "valuename" )
Параметры
keyname Ключ реестра.
valuename название значения.
??

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:12, 20-06-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


И поэтому я получаю:

Код: Выделить весь код
Windows Registry Editor Version 5.00

[HKCU\Software\DashSignature\Knagalis]
"X"="VMKJGNDIDNWLDMKJGNDIDNWLD"
При том что в реестре на самом деле REG_EXPAND_SZ, в итоге у меня получается непригодный регфайл.

Код: Выделить весь код
Switch @OSArch
    Case "x86"
        $sRegVSTs = "HKLM\Software\VST"
    Case "x64"
        $sRegVSTs = "HKLM\Software\Wow6432Node\VST"
EndSwitch

$sInsVSTs = RegRead($sRegVSTs, "VSTPluginsPath")

$sRegKey = "HKEY_CURRENT_USER\Software\DashSignature\Knagalis"

$sZz = RegRead($sRegKey, "X")

$sFile_Content = _
    "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
    "[" & $sRegKey & "]" & @CRLF & _
    '"X"=' & '"' & $sZz & '"' & @CRLF & @CRLF

$sRegFile = $sInsVSTs & "\Knagalis\Knagalis.reg"

FileSetAttrib($sRegFile,"-RASHNOT",0)

$hFileOpen = FileOpen($sRegFile, 10)
FileWrite($hFileOpen, $sFile_Content)
FileClose($hFileOpen)

FileSetAttrib($sRegFile,"-RASHNOT",0)

FileSetTime($sRegFile, '20010101000000', 0, 1)
FileSetTime($sRegFile, '20010101000000', 1, 1)
FileSetTime($sRegFile, '20010101000000', 2, 1)
Мне нужно создать бэкап файл, простой рег. Таковы мои нехитрые действия.

К слову сказать утилита reg.exe, тоже не пригодна, так как экспортировать умеет весь "keyname", целиком.
А это неудобно, нужны только выборочно "valuename" !

-------
Полезное сообщение


Последний раз редактировалось semiono, 20-06-2009 в 03:35.


Отправлено: 00:50, 20-06-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


т.е. получется:
Цитата semiono:
"X"="VMKJGNDIDNWLDMKJGNDIDNWLD" »
а какой вид должен получиться?

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:09, 20-06-2009 | #4


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
[HKEY_CURRENT_USER\Software\DashSignature\Knagalis]
"X"=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
Такой.

-------
Полезное сообщение


Отправлено: 01:25, 20-06-2009 | #5


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


так уже похоже?

Код: Выделить весь код
$sSerial = 'VMKJGNDIDNWLDMKJGNDIDNWLD'
MsgBox(0, '', Binary($sSerial))
далее преобразовывать?

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:28, 20-06-2009 | #6


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Да пожалуйста! Только мне странно, что сам RegRead() не разбирает типов! Ну это нивкакие ворота! Что за экспорт всё в одну кучу в REG_SZ

Цитата:
MsgBox(0, '', Binary($sSerial))
Теперь видимо надо запятых добавить?
Только я боюсь, что такой ручной парсинг всёравно упрёться в ошибки, так как могут переносы строк встретиться.
Но а как узнать где и когда! Хотя вроде бы перенос осуществляется двумя байтами нулей? "00 00"
Там как бы юникод чтоль, по два байта на символ...?
Эх, как я однажды влез в PendingFileRenameOperation, так и не понял что к чему там, опять такая же история...

Мне просто нужен способ для разных программ, чтоб каждый раз не искать решение.

А всё же о чём говорилось в справке?
"use with StringSplit(..., @LF) to get each entry."

-------
Полезное сообщение


Отправлено: 01:34, 20-06-2009 | #7


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата:
Только мне странно, что сам RegRead() не разбирает типов!
в полне согласен, тупизм....Но
1 либо что то не доконца мы понимаем
2 либо действительно тупизм ))

...сожалею, но точного ответа не знаю..

вариант без слешей:
Код: Выделить весь код
Local $sSerial, $i, $sSerialResult

$sSerial = StringLower(StringTrimLeft(Binary('VMKJGNDIDNWLDMKJGNDIDNWLD'), 2))

For $i=1 To StringLen($sSerial) Step 3
    $sSerialResult &= StringMid($sSerial, $i, 2)
    If $i < StringLen($sSerial)-2 Then $sSerialResult &= ',00,'
Next

MsgBox(0, '', $sSerialResult)

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


можно судить так:
ставить слеш после первых 11 пар, далее ставить после каждых 13 пар...

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 01:49, 20-06-2009 | #8


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Очень любопытно! +1
Таг, теперь бы реализовать полностью. Получиться?
Если там нули ко всем символам прибавляються, интересно это ASCII чтоль? Ну хотябы так хорошо будет!
Пробел не нужен > ',00,' в регсинтаксе это идёт подряд без пропусков....
Слеши добавишь?

ЗЫ я и не задумывался никогда, чтоли второй байт юникода всегда равен нулю? Хм зачем он тогда нужен
или это лишь в китайском используют этот байт? Похоже что в нормальном языке всегда нуль! Тогда это удобно будет!

Сейчас я слеши уберу из регфайла и проверю!
Да не нужны! Это видимо для читабельности регфайлов придумали! Проверил.

"valuename"=hex(2):юникод,через,запятые+(плюс два байта нулей= ) 00,00(так сказать закрывашка)

-------
Полезное сообщение


Последний раз редактировалось semiono, 20-06-2009 в 02:12.


Отправлено: 01:56, 20-06-2009 | #9


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


...я уже почти и слеши расставил, думал над красотами ))

но если не нужны - то так:

Код: Выделить весь код
Local $sSerial, $i, $sSerialResult

$sSerial = StringLower(StringTrimLeft(Binary('VMKJGNDIDNWLDMKJGNDIDNWLD'), 2))

For $i=1 To StringLen($sSerial) Step 2
    $sSerialResult &= StringMid($sSerial, $i, 2)
    If $i < StringLen($sSerial)-2 Then $sSerialResult &= ',00,'
Next
$sSerialResult = 'hex(2):' & $sSerialResult & ',00,00,00'

MsgBox(0, '', $sSerialResult)

осталось проверить верность всех цыфирок )

вся разбивка совпадает, все ок ..

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 02:14, 20-06-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
[решено] Нужна помощь с StringRegExpReplace ( "test", "PATTERN-ом", "\1"). ikif AutoIt 6 28-07-2009 20:06
Debian/Ubuntu - [решено] Пропали кнопки "свернуть","закрыть","во весь екран" в папках Alex.sys Общий по Linux 5 02-04-2009 11:13
Приоритет в диспетчере: "реального времени", "средний", "выше среднего" alhimik PC Хочу все знать 3 28-11-2006 05:29
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход