Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Работа с закрытым реестром


Автор: Silmarion 4.4.2007, 09:22
Всем привет!
В общем проблема наверное простая, но сталкиваюсь в первые.
Дело в том, что имеется путь к некоторому файлу (например 'c:\ttt.reg'), как его перенести в реестр, при том что реестр закрыт на клиентсякой машине?

Автор: Silmarion 4.4.2007, 10:05
Неужели никто не знает=(?

Автор: Snowy 4.4.2007, 10:07
Если данная ветка реестра недоступна на запись, то никак.

Автор: Silmarion 4.4.2007, 10:17
Странно я знаю как минимум 1 вариант но он очень долгий получается... чтение файла построчно и внесение каждого параметра отдельно!
Извените за беспокойство всем спс

Автор: Snowy 4.4.2007, 10:22
Если вносится, значит не закрыт ;-)
Вырази мысль яснее.
Реестр никогда не бывает полностью закрыт.
Может отсутствовать доступ на запись на некоторые разделы.

Автор: Silmarion 4.4.2007, 10:42
Попробую объянить, но боюсь коряво получится...
Реестр закрыт для юзера, но через вин апи в него можно вносить изменения. Так вот просто пишу обновления для клиент приложения... и вот там помимо апдэйта может быть еще и test.reg файл который содержит изменения реестра... Как его внести в реестр через вин апи не разбирая его построчно...

Добавлено через 2 минуты и 41 секунду
Как вариант думаю создать отдельный поток (под админом) и из него запускать этот рег файл... но к сожалению не знаю как под поток выставлять админ права=(

Автор: Snowy 4.4.2007, 10:53
Дай попробую угадать.
У юзвера просто заблокирован запуск RegEdit.
Попробуй выполнить строку
reg.exe IMPORT c:\ttt.reg

Автор: Silmarion 4.4.2007, 11:00
Пробовал не получается

Автор: Snowy 4.4.2007, 11:04
А как получается?

Автор: Silmarion 4.4.2007, 11:07
При построчной обработке внутри файла. Но у меня порядка 80к строк и на это уходит много времени...

Автор: Snowy 4.4.2007, 11:26
Напиши свою программу для выгрузки ветки реестра в файл в своём формате.
Добавь загрузку в свою программу.
Зачем юзать reg файл неизвестного формата. Используй свой ;-)
Разбирать формат reg будешь дольше, чем напишешь выгрузку в свой собственный формат.

Автор: ama_kid 4.4.2007, 11:30
Silmarion
Посмотри еще у TRegistry есть функции LoadKey\RestoreKey - сам не пробовал, но по хелпу написано, что загружает ключ из файла... 

Автор: Snowy 4.4.2007, 11:38
Угу. Один ключ из одного файла.
Причём никакого отношения к reg файлам не имеет.
Причём не во всех виндах работает.

Автор: Silmarion 4.4.2007, 12:08
Цитата(Snowy @  4.4.2007,  11:26 Найти цитируемый пост)
Напиши свою программу для выгрузки ветки реестра в файл в своём формате.
Добавь загрузку в свою программу.
Зачем юзать reg файл неизвестного формата. Используй свой ;-)
Разбирать формат reg будешь дольше, чем напишешь выгрузку в свой собственный формат. 

Да я вот тоже думал через ини файл сделать... да вот по ряду причин не подходит=(

Добавлено через 4 минуты и 55 секунд
Можно поставить вопрос по другом! В интернете лежит множество программ которые открывают регистр... Не подскажете как они это делают... я думаю врятли через асму=) если знаете напишите

Автор: bartram 4.4.2007, 17:49
Цитата(Silmarion @  4.4.2007,  14:08 Найти цитируемый пост)
Можно поставить вопрос по другом! В интернете лежит множество программ которые открывают регистр...

Какой регистр? Может имелось в виду реестр? Если ты имел ввиду реестр, то эти проги делают все через WinApi.

Автор: Silmarion 4.4.2007, 18:04
Цитата(bartram @  4.4.2007,  17:49 Найти цитируемый пост)
Какой регистр? Может имелось в виду реестр? Если ты имел ввиду реестр, то эти проги делают все через WinApi.

Естественно реестр, а более существенно можно чтонибудь сказать. То что через вин апи это и так понятно...

Автор: Coffein 18.4.2007, 20:13
Silmarion, могу посоветовать почитать про доступ к реестру с помощью Api, здесь: http://delphirus.com.ru/modules.php?name=Pages&pa=showpage&pid=1903


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)