| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > поиск ключа в regedit |
| Автор: Витаминка 26.1.2007, 21:39 |
| Привет! Как осуществить поиск по реестору зная имя и тип ключа с помощью Делфи? |
| Автор: Данкинг 26.1.2007, 21:45 | ||
В смысле? Открыть ветку? Вот пример из моей проги:
|
| Автор: Sunvas 26.1.2007, 21:48 |
| Рекурсия + код Данкинг-а поможет. |
| Автор: Витаминка 26.1.2007, 22:00 | ||
а можеть есть реальные примеры какие, поисковики молчат( |
| Автор: Данкинг 26.1.2007, 22:02 |
| В смысле, реальные примеры? Вот я реальный привёл, могу весь текст выложить. |
| Автор: Витаминка 26.1.2007, 22:17 |
| Думаю врятли мне поможет весь текст, я знаю название стрингово парметра, но незнаю путь до него, мне надо задать имя параметра и первый найденный путь каторый идёт до параметра с заданым мной именем записался в переменную |
| Автор: RA 26.1.2007, 22:23 |
| Вот роуз на тему написал програмку, можно скачать с исходником http://rouse.drkb.ru/other.php#regfind |
| Автор: Витаминка 26.1.2007, 22:39 |
| Спасибо, это то что надо |
| Автор: Витаминка 29.1.2007, 19:38 | ||
Вот переделала софтинку под себя, но никак не могу разобраться в причине этой ошибки Failed to set data for 'xxx' Если несложно, то поясните что ни так, вот кодесы, правда я так доконца в них и неразобралась как осуществляется поиск, если не лень то прокомментируйте пжлста
|
| Автор: Sunvas 29.1.2007, 19:48 | ||
Скорее всего прав нет. Или пропущена строка
|
| Автор: Витаминка 29.1.2007, 19:54 | ||||
Строка непричём пробывала и права все при мне |
| Автор: Sunvas 29.1.2007, 20:15 |
| Возможно уже есть параметр xxx, только он другого типа (например DWORD); |
| Автор: Витаминка 29.1.2007, 20:45 |
| Да, параметр каторый я ищу есть, а то смысл тогда поиска по ресстору... Тип стринговый |
| Автор: Sunvas 29.1.2007, 20:50 |
Даже не знаю что и посоветовать. приведи код весь что-ли. |
| Автор: RA 29.1.2007, 21:56 | ||
| 1. Все программы роуза всегда содержат мелкие ошибки, это роуз сделал спеиально чтоб левые люди не скопилефтить его софтину. Так что там нужно порыться и найти не логичную ошибку. 2.
|
| Автор: Витаминка 30.1.2007, 19:14 |
| 1) Я нашла в коде нашла только одну нелогическую ошибку, но в том что мне надо это никак непомагло... может их там куча, но я их не вижу 2)Если этот код удалить то будет просто перебор ветвей HKEY_USERS, как тогда сделать проверку на имена параметров в каждой ветви? |
| Автор: Витаминка 31.1.2007, 20:20 | ||||
| RA насоветовал тут мне.... Без этого кода нельзя сделать проверку на Value, и он никак не лишний, лишь одно что IsValidData лучше заменить на
Конешно спасибо за уменьшение кол-ва строк кода, но это никак не решает проблему с Failed to set data for 'xxx' |
| Автор: Витаминка 1.2.2007, 15:04 |
| Ну хотяб предположения какие есть, не может быть чтоб тут не нашлось кодера каторый не мог подсказать в чём дело... |
| Автор: AndySphinx 1.2.2007, 15:30 | ||
Обратите внимание, что в
пытается в параметр xxx записать значение 1111, а нужно то толко сканирование |
| Автор: Витаминка 1.2.2007, 16:34 |
| мда...после сканирования мне нужна запись |
| Автор: Sunvas 1.2.2007, 21:08 |
| Витаминка, выложи весь исходник пожалуйста. Там будет легче тебе помочь. |
| Автор: Витаминка 1.2.2007, 23:56 | ||
Sunvas так я выкладывала на 1ой странице, вот ещё раз
|
| Автор: Sunvas 2.2.2007, 00:56 | ||
Вот, кажется увидел ашипку. Попробуй так:
|
| Автор: Витаминка 2.2.2007, 01:54 |
| Неа((( Я уж незнаю что делать... Мне кажется всё дело FReg.OpenKeyReadOnly, хотя даже када я его закрываю, а потом открываю в режими записи, ошипка всё равно вылетает, а при сканировании можно только открывать в ReadOnly |
| Автор: dimazu 2.2.2007, 03:15 |
| A я бы вместо WriteString iспользовал бы RegSetValueEx в связке с RegOpenKeyEx и RegCloseKey |
| Автор: Витаминка 2.2.2007, 03:21 |
| А ты откуда их взял SetValueEx и OpenKeyEx ??? Такого в модуле Registry нет, по крайней мери у меня... |
| Автор: dimazu 2.2.2007, 04:43 | ||
Да есть такие...
ЗЫ. А почему надо писать в HKEY_USERS ? |
| Автор: Витаминка 2.2.2007, 05:29 |
| Уххх, а без API никак? Мне процедуру сканирования под них переписать никак не удаётся(несовместимость типов и прочие) Можети помочь с переписанием под API, я бош не могу, не получается ЗЫ: потому что в HKEY_USERS находится ветвь в которой лежит нужный мне value |
| Автор: dimazu 2.2.2007, 06:49 | ||
| Если известен путь к ключу, то напишем его типа: HKEY_USERS\.DEFAULT\Software\MyProg\MyValue (тип) Пробуем помочь... Вот пример без API По твоему коду:
|
| Автор: Sunvas 2.2.2007, 12:07 |
| У меня сейчас появилась идея, а что если вынести запись значение в отдельную процедуру? |
| Автор: dimazu 2.2.2007, 15:52 |
| См. пост на один выше. Работает без проблем.... |
| Автор: Витаминка 4.2.2007, 19:05 |
| Спасибо большое за помощь Но это ещё не всё)) 1) Почему value в реестре меняется только после 2ва запуска программы? 2) Если перенести всё эта на консоль, то всё компилится без ошибок, но value не меняет... |
| Автор: dimazu 4.2.2007, 20:08 | ||||
| Если помнишь, я спрашивал почему менять надо именно в HKEY_USERS... Dело в том, что там запись в регистре дублируется системой в HKEY_USERS\S-x-x-xx и вхождений может быть много (два и больше). Поскольку точный путь тебе неизвестен, а известно лишь имя переменной, то в моем примере изменяются ВСЕ вхождения для 'xxxxx', найденные в реестре, под HKEY_USERS, а их, как я и говорил, может быть несколько. Т.е. если предположить, что переменная находится где-то в \.DEFAULT, то надо сделать проверку, типа:
В процедуре Scan nаписать типа:
I приравнять Edited:=False перед Scan |
| Автор: Витаминка 4.2.2007, 22:27 |
| dimazu чтоб я без тебя делала, спасиб! |
| Автор: dimazu 5.2.2007, 00:02 |
| Извиняюсь, но не понял вопроса... |
| Автор: Витаминка 5.2.2007, 17:40 | ||
Если проект создать в Console Application(без окошка) то ничё не работает, но и ошибок никаких нет |
| Автор: dimazu 5.2.2007, 18:04 | ||
| Проверил. Работает. Записывает. Вот пример:
|
| Автор: Витаминка 5.2.2007, 21:18 |
| Спасиб, всё заработало, жаль те плюс поставить не могу... Модеры плюсаните dimazu |