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

Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Система - Реестр - почему не работает REG_SZ, как Hex1?

Ответить
Настройки темы
Система - Реестр - почему не работает REG_SZ, как Hex1?

Забанен


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

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


Известно, что 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.


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

Отправлено: 16:29, 29-02-2016

 

Ветеран


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

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


Цитата Mersim:
Почему же тогда не работает: »
А почему должен работать?

Отправлено: 16:47, 29-02-2016 | #2



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

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


Забанен


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

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


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

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

Отправлено: 16:53, 29-02-2016 | #3


Модератор


Moderator


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

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


Цитата Mersim:
Почему же тогда не работает: »
Вы его в блокноте набивали что ли?
Внесите изменения вручную в реестр, экспортируйте нужную ветку в reg файл, сравните полученный с самописным
Скрытый текст
REGEDIT4, как минимум

Цитата Mersim:
почему не должен, если все остальные работают? »
остальные тоже сочинялись в блокноте?

Отправлено: 08:57, 01-03-2016 | #4


Забанен


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

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


Amigos,

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

Когда я рег-файл формирую в программе, то все остальные строки легко формируются в цикле:
(курсивом - переменные)
Код: Выделить весь код
[sKey]
"sValue"=hex(sType):sData
и лишь для RG_SZ
Код: Выделить весь код
[sKey]
"sValue"="sData"
т.е. из-за этого RG_SZ я вынужден вставлять проверку типа, когда для всех остальных нотация предусматривает обращение по типу непосредственно.
.

Отправлено: 15:59, 01-03-2016 | #5


Ветеран


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

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


Mersim, попробуйте использовать новый, юникодный формат — «Windows Registry Editor Version 5.00», причём в виде:
Код: Выделить весь код
"Value E"=hex(1):<REG_SZ (as comma-delimited list of hexadecimal values representing a UTF-16LE NUL-terminated string)>
а вовсе не в виде «hex(1):Simple Text».

Отсюда: Windows Registry: REG files - Wikipedia, the free encyclopedia

Отправлено: 16:18, 01-03-2016 | #6


Забанен


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

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


Iska, спасибо. Я с этой страницы сюда и пришел :)

1. Мне очень не хочется уходить в юникод
2. Оно так же не работет :(

Если ты акцентируешься на угловых скобках - то это ведь пример. В реале их не надо.

Впрочем, я пытался в разных вариантах :) Чем черт не шутит :)
Код: Выделить весь код
; BOF
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\!__2Del]
"2del"="is deleted"
"2dell"=dword:00003039
"2Delll"=hex(7):73,00,64,00,73,00,64,00,66,00,67,00,73,00,64,00,67,00,00,00,64,\
  00,66,00,64,00,66,00,67,00,00,00,00,00
"SZ_Sim"="Simple notation"
;                                      all of lines below are ignored
"SZ_Hex1"=hex(1):Hex notation
"SZ_Hex2"=hex(1):"Hex notation"
"SZ_Hex3"=hex(1):<Hex notation>
"SZ_Hex4"=hex(1):<"Hex notation">
"Value E"=hex(1):<REG_SZ (as comma-delimited list of hexadecimal values representing a UTF-16LE NUL-terminated string)>
; EOF
Формат файла - UCS-2 LE BOM
Я для чистоты эксперимента вначале экспортнул его из RegEdit в формате по умолчанию (не меняя на NT), а потом в нем делал правки. Руками :)
.

Отправлено: 17:21, 01-03-2016 | #7


Ветеран


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

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


Цитата Mersim:
Впрочем, я пытался в разных вариантах Чем черт не шутит »
Вы издеваетесь, что ли?!

Код: Выделить весь код
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
Скрытый текст

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

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

Отправлено: 22:25, 01-03-2016 | #8


Забанен


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

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


Да... Жестко я лопухнулся.
Все работает и под 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:
Вы издеваетесь, что ли?! »
Я решил, что это издевка с твоей стороны...
Код: Выделить весь код
Под тег код(!) засунуть инструкцию.
Потом только допер прочитать ее БУКВАЛЬНО.
.

Отправлено: 22:35, 01-03-2016 | #9


Ветеран


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

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


Цитата Mersim:
Ну а косяк с тупым поведением RegEdit, когда он рапортует ОК при явных ошибках импорта, остается на совести Билла. »
Раздел-то он импортирует? Импортирует.

Цитата Mersim:
Но, меня это не лечит совсем. В любом случае REG_SZ надо отслеживать - или чтобы сконвертить в hex, или чтобы записать, не используя тип. »
Ну да. А у Вас как было/есть?

Цитата Mersim:
А если hex(n) все таки использовать, то читабельность рег-файла падает до нуля и ниже. »
Добавляйте тут же, рядом комментарий с обычным текстом. Я лично так и делал, когда использовал тип REG_EXPAND_SZ. И овцы будут целы, и волки сыты.

Отправлено: 23:22, 01-03-2016 | #10



Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Система - Реестр - почему не работает REG_SZ, как Hex1?

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как узнать какая версия ОС используется? и почему не работает идентификация McLotos Microsoft Windows 8 и 8.1 6 20-03-2013 16:08
[решено] Как удалить REG_SZ? vizent Хочу все знать 11 20-08-2012 18:48
C/C++ - [решено] C# Invoke(), работает не как надо, почему? Barit Программирование и базы данных 1 21-04-2012 15:02
Не работает RegWrite(запись в реестр) на Windows 7 sashadeg AutoIt 8 15-05-2009 22:40
Не работает импорт в реестр через [GuiRunOnce] Serg-13 Автоматическая установка Windows 2000/XP/2003 3 09-11-2005 13:37




 
Переход