|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ? |
|
[решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?
|
Ветеран Сообщения: 830 |
Профиль | Отправить PM | Цитировать Цитата:
Мне надо счесть корректно параметр, который REG_MULTI_SZ, разделять строки это тоже хорошо, в InnoSetup используется {break}, но это всё относительно записи, нафига это всё надо для чтения, ведь откуда известно что я считаю регридом? Ведь было бы известно, тогда бы и читать не нужно! ? Одним словом как читать дворд, мултисз, экспанд итп...? Бывает, кстати неизвесно вообще заранее какой тип, хотя это отдельный вопрос. |
||
------- Отправлено: 22:12, 19-06-2009 |
Ветеран Сообщения: 830
|
Профиль | Отправить PM | Цитировать proxy, у тебя не верно. Там REG_EXPAND_SZ, у тебя REG_MULTI_SZ.
Я сам пока мы это дискутировали, не раз запутывался Одна из моих ошибок была, создание регфайла с [HKCU\....], что неподдерживается в регфайлах. Я раза два по запарке так написал. Цитата proxy:
Поясню... суть в том, чтобы зделать правильный регфайл в котором встречается 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать semiono, да думаю легко сделать....но прошу, semiono, объясни понятней ))))))
разбить строку слешами? - это нужно? опять же, а так правильно? просто, даже с 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 |
Ветеран Сообщения: 830
|
Профиль | Отправить 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 |
Ветеран Сообщения: 830
|
Профиль | Отправить 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 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать semiono, я до сих пор в не до понимании )
* для того, что бы созданный reg файл записывал в реестр значение: VMKJGNDIDNWLDMKJGNDIDNWLD с типом величины: REG_MULTI_SZ * надо, что бы в reg файле, это значение было в виде циферок (юникод). * а так как autoIt скрипт считывает значение в виде: VMKJGNDIDNWLDMKJGNDIDNWLD, надо это значение конвертировать в юникод, что бы сохранить в reg файле. правильно понимаю? Цитата:
в общем, напиши, что и как формировать - чем смогу - помогу )))))))))))))))))) |
|
------- Отправлено: 23:16, 21-06-2009 | #35 |
Ветеран Сообщения: 830
|
Профиль | Отправить 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) Но так как на этом скрипте дело не стало, то хочется и другие ситуации предусмотреть, в часности REG_EXPAND.. На будущее! Вся фитча вот здесь происходит: |
------- Отправлено: 23:19, 21-06-2009 | #36 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать значит сейчас необходимо:
1. доделать, что бы расставлялись слеши, по какомоту мистичискому принципу. 2. Цитата:
|
|
------- Отправлено: 23:29, 21-06-2009 | #37 |
Ветеран Сообщения: 830
|
Профиль | Отправить PM | Цитировать proxy, я тебе предлагаю так же помимо моей затеи разработать инклюд для корректного экспорта параметров реестра в валидный регфайл! Это имхо будет полезно всем
Цитата proxy:
|
|
------- Отправлено: 23:30, 21-06-2009 | #38 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать да с удовольствием, да только пока не все понял: что / куда/ зачем ))))))))))
Цитата:
Т.е. это набор функций, которые находятся во внешнем файле. Это для удобства. Так как эти функции, в большинстве случаев, используются в том виде, в каком они есть, т.е. без их редактирования. Цитата:
semiono, а на том форуме ты под ником AZJIO ? и не надо каждый мой пост отмечат благодарностью - лучше только те, которые дейтсвительно содержат решение вопроса )))) |
||
------- Отправлено: 23:35, 21-06-2009 | #39 |
Ветеран Сообщения: 830
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | 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 |
|