Система - Реестр - почему не работает REG_SZ, как Hex1?

Аватара пользователя
Mersim

Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Mersim »

Известно, что REG_SZ - имеет тип 1, а, например, REG_MULTI_SZ = 7, REG_DWORD = 4 etc.



Почему же тогда не работает:



Код:

Код: Выделить всё

REGEDIT4
[HKEY_CURRENT_USER\!__2Del]
"2del_REG_SZ_h1"=hex(1):Simple Text

Ни параметр не создается, ни значение имеющегося не меняется.

Хотя, в интерактивном режиме RegEdit пишет, что:



Registry Editor

Information in ..\RRC\2Del_Reg_Sz.reg has been successfully entered into the registry on My Computer.[/i]



Очередной косяк венды?

Win 2003

.
Аватара пользователя
Mersim

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Mersim »

Вопросом на вопрос? ОК.



А почему не должен, если все остальные работают?

Почему он, находясь в единой иерархии с остальными, требует к себе индивидуального подходя?

Почему он один не вписывается в общую, казалось бы, неплохую нотацию?

.
Аватара пользователя
Iska

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Iska »

Цитата Mersim:



Почему же тогда не работает:
Система - Реестр - почему не работает REG_SZ, как Hex1?




Вы его в блокноте набивали что ли?

Внесите изменения вручную в реестр, экспортируйте нужную ветку в reg файл, сравните полученный с самописным


Скрытый текст

[spoiler]REGEDIT4, как минимум[/spoiler]





Цитата Mersim:



почему не должен, если все остальные работают?
Система - Реестр - почему не работает REG_SZ, как Hex1?




остальные тоже сочинялись в блокноте?
Аватара пользователя
Amigos

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Amigos »

Amigos,



Если бы руками, то можно было и не акцентироваться на этом.



Когда я рег-файл формирую в программе, то все остальные строки легко формируются в цикле:

(курсивом - переменные)



Код:

Код: Выделить всё

[sKey]
"sValue"=hex(sType):sData

и лишь для RG_SZ



Код:

Код: Выделить всё

[sKey]
"sValue"="sData"

т.е. из-за этого RG_SZ я вынужден вставлять проверку типа, когда для всех остальных нотация предусматривает обращение по типу непосредственно.

.
Аватара пользователя
Mersim

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Mersim »

Amigos,



Если бы руками, то можно было и не акцентироваться на этом.



Когда я рег-файл формирую в программе, то все остальные строки легко формируются в цикле:

(курсивом - переменные)



Код:

Код: Выделить всё

[sKey]
"sValue"=hex(sType):sData

и лишь для RG_SZ



Код:

Код: Выделить всё

[sKey]
"sValue"="sData"

т.е. из-за этого RG_SZ я вынужден вставлять проверку типа, когда для всех остальных нотация предусматривает обращение по типу непосредственно.

.
Аватара пользователя
Iska

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Iska »

Mersim, попробуйте использовать новый, юникодный формат — «Windows Registry Editor Version 5.00», причём в виде:



Код:

Код: Выделить всё

"Value E"=hex(1):

а вовсе не в виде «hex(1):Simple Text».



Отсюда:
Windows Registry: REG files - Wikipedia, the free encyclopedia
Аватара пользователя
Mersim

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Mersim »

Цитата Mersim:



Впрочем, я пытался в разных вариантах Изображение Чем черт не шутит Изображение
Система - Реестр - почему не работает REG_SZ, как Hex1?




Вы издеваетесь, что ли?!





Код:

Код: Выделить всё

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Sample Key]
"Sample parameter"=hex(1):1C,04,30,04,3C,04,30,04,20,00,3C,04,4B,04,3B,04,30,04,20,00,40,04,30,04,3C,04,43,04,21,00,00,00




Скрытый текст

[spoiler]Изображение[/spoiler]






Скрытый текст

[spoiler]Изображение[/spoiler]




Ясно же сказано: «as comma-delimited list of hexadecimal values representing a UTF-16LE NUL-terminated string». А у Вас что?!
Аватара пользователя
Iska

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Iska »

Да... Жестко я лопухнулся.

Все работает и под 4 и под 5.





Код:

Код: Выделить всё

"SZ_Hex5"=hex(1):48,00,65,00,78,00,20,00,6E,00,6F,00,74,00,61,00,74,00,69,00,6F,00,6E,00

Вывод:

параметр hex(n): не только указывает на тип Data, которые идут следом,

но и вменяет hex-формат записи этих Data.




Но, меня это не лечит совсем. В любом случае REG_SZ надо отслеживать - или чтобы сконвертить в hex, или чтобы записать, не используя тип. А если hex(n) все таки использовать, то читабельность рег-файла падает до нуля и ниже.



Ну а косяк с тупым поведением RegEdit, когда он рапортует ОК при явных ошибках импорта, остается на совести Билла.

.




Цитата Iska:



Вы издеваетесь, что ли?!
Система - Реестр - почему не работает REG_SZ, как Hex1?




Я решил, что это издевка с твоей стороны...

Код:

Код: Выделить всё

Под тег код(!) засунуть инструкцию.

Потом только допер прочитать ее БУКВАЛЬНО.

.
Аватара пользователя
Mersim

Re: Система - Реестр - почему не работает REG_SZ, как Hex1?

Сообщение Mersim »

Цитата Mersim:



Ну а косяк с тупым поведением RegEdit, когда он рапортует ОК при явных ошибках импорта, остается на совести Билла.
Система - Реестр - почему не работает REG_SZ, как Hex1?




Раздел-то он импортирует? Импортирует.




Цитата Mersim:



Но, меня это не лечит совсем. В любом случае REG_SZ надо отслеживать - или чтобы сконвертить в hex, или чтобы записать, не используя тип.
Система - Реестр - почему не работает REG_SZ, как Hex1?




Ну да. А у Вас как было/есть?




Цитата Mersim:



А если hex(n) все таки использовать, то читабельность рег-файла падает до нуля и ниже.
Система - Реестр - почему не работает REG_SZ, как Hex1?




Добавляйте тут же, рядом комментарий с обычным текстом. Я лично так и делал, когда использовал тип REG_EXPAND_SZ. И овцы будут целы, и волки сыты.
Ответить

Вернуться в «Программное обеспечение Windows»