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

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

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

Аватара для semiono

Ветеран


Сообщения: 830
Благодарности: 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

 

Аватара для semiono

Ветеран


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

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


proxy, у тебя не верно. Там REG_EXPAND_SZ, у тебя REG_MULTI_SZ.
Я сам пока мы это дискутировали, не раз запутывался
Одна из моих ошибок была, создание регфайла с [HKCU\....], что неподдерживается в регфайлах.
Я раза два по запарке так написал.
Цитата proxy:
вопрос, почему у тебя результат чтения: VMKJGNDIDNWLDMKJGNDIDNWLD »
Наверное, вопрос связан с ошибкой "REG_MULTI_SZ", или же ты что-то другое спрашиваешь?
Поясню... суть в том, чтобы зделать правильный регфайл в котором встречается REG_EXPAND_SZ.
Ну и REG_MULTI_SZ и REG_BINARY - это тоже всё интересно! А сам контент, как в этом частном случае,
это не важно. Главное синтакс! Мне сдаётся проблема неразрешимой, ибо длина первой строки до слэш
непостоянна, так как она походу выравнивается относительно длины "ValueName"="...
Если бы хотя бы прочитать, что за регламент у них там по этому поводу? Я доков не нахожу.
Постоянным являеться лишь то, что остальные строки вроде бы всегда по 25 символов '61,00,' типа
Если первую строку не зделать красиво, то будет жаль.
Я предполагаю что у них какнибудь грубо делиться, вроде 25/2 если надо ещё, то 25/4 и т.п.

Хотя, вот родил - я бы зделал так, чтобы ("ValueName" +1) == (stringW - 1)
А что идея! Только я в au3 такое невытяну! Зделай если можешь!?
Если даже ошибёмся в колличестве, зато решение универсальное для любых стринг которое легко потом подправить!
_RegRead board autoit team со своим инклюдом отыхают!

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


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


Отправлено: 16:04, 21-06-2009 | #31



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

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


Аватара для proxy

Старожил


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

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


semiono, да думаю легко сделать....но прошу, semiono, объясни понятней ))))))
разбить строку слешами? - это нужно?

опять же, а так правильно?
читать дальше »

Код: Выделить весь код
RegWrite('HKEY_CURRENT_USER\Software\DashSignature\Knagalis', 'x', 'REG_EXPAND_SZ', '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')
$var1 = RegRead('HKEY_CURRENT_USER\Software\DashSignature\Knagalis',  'x')

MsgBox(0, '', $var1)

просто, даже с REG_EXPAND_SZ, значение читается правильно:
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

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


Последний раз редактировалось proxy, 21-06-2009 в 18:57.

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

Отправлено: 18:20, 21-06-2009 | #32


Аватара для semiono

Ветеран


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

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


proxy, не забывай пожалуйста, мы делаем рег. И потом как этот рег пишет в реестр нам дела уже нет.
Но он должен быть правильный. Желательно
Ты сейчас в примере записал цыфры автоитом, причём со словом "hex(2):" понимаешь?
То есть у тебя всё так и записалось в реестр как в листинге.
Твой:

правильный:

Цыфры живут только внутри регфайла, а автоит шурует напрямую в чём и загвоздка.

Эти юникоды с запятыми нужны только для записи в file.reg
а он уже сам разберёться как их вбить в реестр.

Слеши надо зделать так - двадцать пять юникод пар > '61,62,' и слешь > '\'
в конце строки всего дампа два байта нулей '00,00' < это типа точки

НО первую строку надо зделать зависимой от "ValueNameДлины"="
Саму первую строку не знаю какую за основу взять, сам съэкспоритруй чтонибудь?
А потом надо если длина имени больше на букву, то отнять от строки один байт,
либо наоборот.
("ValueNameДлина" +1буква) == (stringWуникод - 1байт)

If $sValue + 1 then $sStringLenth - 1

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


Последний раз редактировалось semiono, 21-06-2009 в 22:59.


Отправлено: 22:46, 21-06-2009 | #33


Аватара для semiono

Ветеран


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

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


Вот что я выяснил...
Код: Выделить весь код
"1"=hex(2):61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,\
"12"=hex(2):61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,\
"123"=hex(2):61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,\
"1234"=hex(2):61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,00,61,\ < опять короткая как и первая!
Короче "перелом" наступает когда имя становиться на три символа )) длинее, и так далее.
Саму длину строки посчитай чтоб я не ошибся?

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


Отправлено: 23:05, 21-06-2009 | #34


Аватара для proxy

Старожил


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

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


semiono, я до сих пор в не до понимании )

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

* надо, что бы в reg файле, это значение было в виде циферок (юникод).

* а так как autoIt скрипт считывает значение в виде: VMKJGNDIDNWLDMKJGNDIDNWLD,
надо это значение конвертировать в юникод, что бы сохранить в reg файле.

правильно понимаю?

Цитата:
Короче "перелом" наступает когда имя становиться на три символа )) длинее, и так далее.
Саму длину строки посчитай чтоб я не ошибся?
))))))))))))))))))))))))))))))))

в общем, напиши, что и как формировать - чем смогу - помогу ))))))))))))))))))

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

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

Отправлено: 23:16, 21-06-2009 | #35


Аватара для semiono

Ветеран


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

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


Да! Но там не только юникод, там ещё и запятые и слеши с переменной длиной первой строки, ты же понимаешь? А так всё верно!

Вот код, хочу напомнить. Но там проблема какраз вышла из-за разных типов. То есть это недоделанный скрипт...
Код: Выделить весь код
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"

$sSerial = RegRead($sRegKey, "SN")

Local $sSerial, $i, $sSerialResult

For $i=1 To StringLen($sSerial)

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


$sFile_Content = _
    "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
    "[" & $sRegKey & "]" & @CRLF & _
    '"SN"=' & $sSerialResult & @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)
Суть в том чтобы просто зделать бэкап файлик Knagalis.reg и всё!
Но так как на этом скрипте дело не стало, то хочется и другие ситуации предусмотреть,
в часности REG_EXPAND.. На будущее!

Вся фитча вот здесь происходит:
Код: Выделить весь код
$sFile_Content = _
    "Windows Registry Editor Version 5.00" & @CRLF & @CRLF & _
    "[" & $sRegKey & "]" & @CRLF & _
    '"SN"=' & $sSerialResult & @CRLF & @CRLF

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

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


Отправлено: 23:19, 21-06-2009 | #36


Аватара для proxy

Старожил


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

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


значит сейчас необходимо:

1. доделать, что бы расставлялись слеши, по какомоту мистичискому принципу.

2.
Цитата:
в часности REG_EXPAND.. На будущее!
т.е., а с ним что?

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

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

Отправлено: 23:29, 21-06-2009 | #37


Аватара для semiono

Ветеран


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

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


proxy, я тебе предлагаю так же помимо моей затеи разработать инклюд для корректного экспорта параметров реестра в валидный регфайл! Это имхо будет полезно всем

Цитата proxy:
по какомоту мистичискому принципу. »
Да.

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


Отправлено: 23:30, 21-06-2009 | #38


Аватара для proxy

Старожил


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

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


да с удовольствием, да только пока не все понял: что / куда/ зачем ))))))))))

Цитата:
инклюд
это называется UDF - User Defined Function - "пользовательские функции", даже можно сказать "утвержденные пользовательские функции".
Т.е. это набор функций, которые находятся во внешнем файле. Это для удобства. Так как эти функции, в большинстве случаев, используются в том виде, в каком они есть, т.е. без их редактирования.

Цитата:
разработать
осталось только разобраться по какому принципу расставляются слеши.

semiono, а на том форуме ты под ником AZJIO ?

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

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


Отправлено: 23:35, 21-06-2009 | #39


Аватара для semiono

Ветеран


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

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


AZJIO хе-хе Не это не я! Я повозможности всегда семёно. Очень был зол когда на @gmail это имя моё кто-то занял )))

< +1 гыгы!

я даже понимаю почему этого нет, потому что
ShellExecute ( "reg.exe", "export ""HKCU\Software\aa"" C:\MyReg.reg")
Но тут мы опять получаем reg.exe export /? такой, какой он есть, без всякого выбора конкретного параметра :\

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


Последний раз редактировалось semiono, 21-06-2009 в 23:56.


Отправлено: 23:44, 21-06-2009 | #40



Компьютерный форум 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




 
Переход