|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ? |
|
[решено] RegRead ( "keyname", REG_EXPAND_SZ "valuename" ) ?
|
Ветеран Сообщения: 842 |
Профиль | Отправить PM | Цитировать Цитата:
Мне надо счесть корректно параметр, который REG_MULTI_SZ, разделять строки это тоже хорошо, в InnoSetup используется {break}, но это всё относительно записи, нафига это всё надо для чтения, ведь откуда известно что я считаю регридом? Ведь было бы известно, тогда бы и читать не нужно! ? Одним словом как читать дворд, мултисз, экспанд итп...? Бывает, кстати неизвесно вообще заранее какой тип, хотя это отдельный вопрос. |
||
------- Отправлено: 22:12, 19-06-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать т.е., при чтение данных из реестра, Вы желаите указать тип считываемых данных, так?
если так, - то зачем? помойму в справке по RegRead этого не требуется: Цитата:
|
|
------- Отправлено: 00:12, 20-06-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать И поэтому я получаю:
Windows Registry Editor Version 5.00 [HKCU\Software\DashSignature\Knagalis] "X"="VMKJGNDIDNWLDMKJGNDIDNWLD" 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 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать т.е. получется:
Цитата semiono:
|
|
------- Отправлено: 01:09, 20-06-2009 | #4 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать |
|
------- Отправлено: 01:25, 20-06-2009 | #5 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 01:28, 20-06-2009 | #6 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Да пожалуйста! Только мне странно, что сам RegRead() не разбирает типов! Ну это нивкакие ворота! Что за экспорт всё в одну кучу в REG_SZ
Цитата:
Только я боюсь, что такой ручной парсинг всёравно упрёться в ошибки, так как могут переносы строк встретиться. Но а как узнать где и когда! Хотя вроде бы перенос осуществляется двумя байтами нулей? "00 00" Там как бы юникод чтоль, по два байта на символ...? Эх, как я однажды влез в PendingFileRenameOperation, так и не понял что к чему там, опять такая же история... Мне просто нужен способ для разных программ, чтоб каждый раз не искать решение. А всё же о чём говорилось в справке? "use with StringSplit(..., @LF) to get each entry." |
|
------- Отправлено: 01:34, 20-06-2009 | #7 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата:
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 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Очень любопытно! +1
Таг, теперь бы реализовать полностью. Получиться? Если там нули ко всем символам прибавляються, интересно это ASCII чтоль? Ну хотябы так хорошо будет! Пробел не нужен > ',00,' в регсинтаксе это идёт подряд без пропусков.... Слеши добавишь? ЗЫ я и не задумывался никогда, чтоли второй байт юникода всегда равен нулю? Хм зачем он тогда нужен или это лишь в китайском используют этот байт? Похоже что в нормальном языке всегда нуль! Тогда это удобно будет! Сейчас я слеши уберу из регфайла и проверю! Да не нужны! Это видимо для читабельности регфайлов придумали! Проверил. "valuename"=hex(2):юникод,через,запятые+(плюс два байта нулей= ) 00,00(так сказать закрывашка) |
------- Последний раз редактировалось semiono, 20-06-2009 в 02:12. Отправлено: 01:56, 20-06-2009 | #9 |
Старожил Сообщения: 460
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | 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 |
|