Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Не прописываемое значение... (http://forum.oszone.net/showthread.php?t=290403)

Dodakaedr 04-11-2014 11:50 2424440

Не прописываемое значение...
 
Скажите, пожалуйста, как импортировать такой ключ через cmd/bat?
Содержимое reg ключа
Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Code Systems]

[HKEY_LOCAL_MACHINE\SOFTWARE\Code Systems\Spoon IDE]
"LicenseCertificate"="<?xml version=\"1.0\" encoding=\"utf-16\"?><LicenseCertificate version=\"2\" publisher=\"Spoon\"><LicenseType>Retail</LicenseType><LicenseModel>Site</LicenseModel><ProductCode>ALL</ProductCode><LicenseeName>LineZer0</LicenseeName><Account>LineZer0</Account><Signature>

b741fb7157f38cbdfbe9e41faa55d72baba67d350ec7f2ba38236a01e06476f1

f4d6e184a49ce6716162935d2768aed3e583afcf7f8b59be415c57898dca0d67

289c342633b590bb2b342f97e92872e86de1434c9e84d6757638786e5abf24cd

e6394692e1012b93e517b27d38721c94dac5c0964a6d6b63826e314dd0dbe41d

</Signature></LicenseCertificate>"


оригинальный текст значения
Код:

<?xml version="1.0" encoding="utf-16"?>
<LicenseCertificate version="2" publisher="Spoon">
    <LicenseType>Retail</LicenseType>
    <LicenseModel>Site</LicenseModel>
    <ProductCode>ALL</ProductCode>
    <LicenseeName>LineZer0</LicenseeName>
    <Account>LineZer0</Account>
    <Signature>
        b741fb7157f38cbdfbe9e41faa55d72b
        aba67d350ec7f2ba38236a01e06476f1
        f4d6e184a49ce6716162935d2768aed3
        e583afcf7f8b59be415c57898dca0d67
        289c342633b590bb2b342f97e92872e8
        6de1434c9e84d6757638786e5abf24cd
        e6394692e1012b93e517b27d38721c94
        dac5c0964a6d6b63826e314dd0dbe41d
    </Signature>
</LicenseCertificate>


При обычном импорте параметр LicenseCertificate почему-то не создается.

Iska 04-11-2014 14:36 2424504

Цитата:

Цитата Dodakaedr
При обычном импорте »

Что подразумевается под «обычным импортом»?

Dodakaedr 04-11-2014 17:47 2424579

Цитата:

Цитата Iska
Что подразумевается под «обычным импортом»? »

Вот экспортировал ключ, удалил его с реестра, а потом хотел импортировать обратно, но параметр LicenseCertificate уже не создается.

Iska 05-11-2014 06:19 2424797

Dodakaedr, тип значения какой — строка, многострочный параметр? Например, покажите скриншот такого вида:
Скрытый текст

Dodakaedr 05-11-2014 16:28 2425042

Спасибо! Уже помогли...разобрался.

khasia 03-11-2016 09:44 2684271

Понимаю что тема вроде закрыта.
Если кто может отпишитесь. Каким образом решена данная проблема.
Всё как на скриншоте постом выше.

Iska 03-11-2016 09:54 2684277

Цитата:

Цитата khasia
Понимаю что тема вроде закрыта. »

Коль Вы в неё можете написать — то нет, не закрыта.


Цитата:

Цитата khasia
Каким образом решена данная проблема. »

Сие осталось покрыто мраком, ибо коллега Dodakaedr не счёл потребным дать каких-либо пояснений. Но Вы можете написать ему в личку или на почту, он периодически появляется на конференции.

khasia 04-11-2016 03:00 2684535

Вообще я был уверен что если по каким-то причинам мне придётся сделать откат системы то ключ реестра должен будет восстановиться, с большой долей вероятности.
Выходит в данном конкретном случае, средствами Windows не получится сделать "экспорт-импорт" ключа.
Либо писать утилитку под эту операцию, либо переустанавливать софт.

Iska 04-11-2016 08:22 2684554

Я Вас не понимаю.

khasia 04-11-2016 10:12 2684568

Выше указанный ключ, невозможно добавить в реестр.
Содержимое reg ключа
Windows Registry Editor Version 5.00

Код:

[HKEY_LOCAL_MACHINE\SOFTWARE\Code Systems]

[HKEY_LOCAL_MACHINE\SOFTWARE\Code Systems\Spoon IDE]
"LicenseCertificate"="<?xml version=\"1.0\" encoding=\"utf-16\"?><LicenseCertificate version=\"2\" publisher=\"Spoon\"><LicenseType>Retail</LicenseType><LicenseModel>Site</LicenseModel><ProductCode>ALL</ProductCode><LicenseeName>LineZer0</LicenseeName><Account>LineZer0</Account><Signature>

b741fb7157f38cbdfbe9e41faa55d72baba67d350ec7f2ba38236a01e06476f1

f4d6e184a49ce6716162935d2768aed3e583afcf7f8b59be415c57898dca0d67

289c342633b590bb2b342f97e92872e86de1434c9e84d6757638786e5abf24cd

e6394692e1012b93e517b27d38721c94dac5c0964a6d6b63826e314dd0dbe41d

</Signature></LicenseCertificate>"


Имеется ввиду из него сделать reg-файл и запустить его. Ветка пропишется а вот строковой параметр нет.

Iska 04-11-2016 10:49 2684577

khasia, вопрос тот же — как был сделан этот файл реестра? Также хотелось бы посмотреть на оригинальное содержимое данного параметра в реестре.

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

khasia 04-11-2016 12:43 2684613

Он такой же как в вашем посте #4
Вот ещё один

Iska 04-11-2016 13:33 2684624

Цитата:

Цитата khasia
Он такой же как в вашем посте #4
Вот ещё один »

Вы знаете, по виду — не совсем такой же. Обратите внимание на то, что я обвёл красным:
Скрытый текст

Выделенное — концы строк. Есть ли они у Вас (и должны ли они быть — я-то ведь просто пример показывал) — сложно сказать.

Давайте попробуем так, дабы я смог попытаться «поиграться» и «пощупать». Выполните сохранение искомого подраздела во внешний куст командой (вместо выделенного подставьте Ваш путь в реестре):
Код:

reg.exe save "HKEY_LOCAL_MACHINE\SOFTWARE\Code Systems\Spoon IDE" "Sample.hiv"
Упакуйте полученный Sample.hiv в архив и приложите к сообщению.

khasia 04-11-2016 14:10 2684632

Вложений: 1
Цитата:

Цитата Iska
Упакуйте полученный Sample.hiv в архив и приложите к сообщению. »


Iska 04-11-2016 14:55 2684638

khasia, примерно ясно. Вот как он выглядит в реальности:
Скрытый текст

И, видимо, поэтому на этапе экспорта C-шные функции работы со строкой воспринимают эти данные как свои escape-последовательности (конец строки в формате Windows из пары символов CrLf) и пишут их в экспортируемый файл. Обратного же преобразования в escape-последовательности, естественно, не производится.

Предлагаю два варианта:

1. Использовать формат кустов — уже знакомый Вам:
Код:

reg.exe save "Путь к подразделу" "Файл.hiv"
для экспорта куста и:
Код:

reg.exe restore "Путь к подразделу" "Файл.hiv"
для импорта. Не так наглядно, но работает.

2. Учитывая тот факт, что по стандарту xml должен быть индифферентен к пробельным символам (теоретически должен, на практике же всё зависит от конкретного парсера xml), попробовать в полученном путём экспорта файле реестра .reg (reg.exe export) «ручками» убрать все концы строк, дабы получилась одна строка, наподобие (на путь к подразделу не смотрите — это пример, у Вас путь будет свой):
Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Sample]
"LicenseCertificate"="<?xml version=\"1.0\" encoding=\"utf-16\"?><LicenseCertificate version=\"2\" publisher=\"Spoon\">    <LicenseType>Retail</LicenseType>    <LicenseModel>Site</LicenseModel>    <ProductCode>ALL</ProductCode>    <LicenseeName>LineZer0</LicenseeName>    <Account>LineZer0</Account>    <Signature>        b741fb7157f38cbdfbe9e41faa55d72b        aba67d350ec7f2ba38236a01e06476f1        f4d6e184a49ce6716162935d2768aed3        e583afcf7f8b59be415c57898dca0d67        289c342633b590bb2b342f97e92872e8        6de1434c9e84d6757638786e5abf24cd        e6394692e1012b93e517b27d38721c94        dac5c0964a6d6b63826e314dd0dbe41d    </Signature></LicenseCertificate>"

Затем сделайте резервную копию в виде экспорта куста реестра путём вышеприведённой команды reg.exe save …, затем попробуйте импортировать отредактированный файл реестра .reg. Затем попробуйте запустить приложение/приложения, которые работают с данным параметром реестра, и посмотреть, всё ли будет в порядке. Если всё будет нормально — значит второй путь также годится к использованию.


Есть и ещё один вариант, связанный опять же с ручной подстановкой \r\n в экспортированный файл реестра, но есть подозрение, что при попытке импорта наступим на те же грабли. Посему пока даже не проверял сие.

khasia 04-11-2016 15:16 2684641

У меня в результате экспериментов, вроде получилось. Вот как добился.
1. Экспортирую ветку в reg-файл, получаю содержимое REG-ключа такого же вида как в шапке.
2. Открываю в текстовом редакторе и привожу его к виду, как в последнем примере в вашем предыдущем посте. Т.е значение в одну строчку и без пробелов, и сохраняю в ЮНИКОДЕ. И всё прописывается. Если не трудно проверьте на корректность.

Iska 04-11-2016 15:46 2684651

Цитата:

Цитата khasia
и без пробелов »

Пробелы как раз не существенны. Проблема состоит в escape-последовательностях, которые воспринимаются и обрабатываются «как свои» C-шными функциями работы со строками редактора реестра и утилиты reg.exe, как я писал чуть выше.

Цитата:

Цитата khasia
и сохраняю в ЮНИКОДЕ. »

Так файл и так будет в юникоде (UTF-16LE/1200) уже при экспорте из реестра.

Цитата:

Цитата khasia
Если не трудно проверьте на корректность. »

А как я могу проверить? Тут только Вы сами:
Цитата:

Цитата Iska
Затем попробуйте запустить приложение/приложения, которые работают с данным параметром реестра, и посмотреть, всё ли будет в порядке. Если всё будет нормально — значит второй путь также годится к использованию. »

У меня-то этих приложений нет.

khasia 04-11-2016 15:57 2684654

Да проверил, приложение работает нормально.
Спасибо за помощь.


Время: 05:09.

Время: 05:09.
© OSzone.net 2001-