Как рекурсивно обойти реестр ? #97766


#0 by vladiko
Как получить дерево ключей и каталогов реестра. Просто нужно получить файл, содержащий дерево ключей и каталогов, для дальнейшей обработки в 1С:...hklm/hklm/Microsoft/hklm/Microsoft/Windows/...Hkcu/...т.е чем сделать рекурсивный обход реестра (WSH не позволяет, WMI не знаю).Подскажите, коллеги, очень надо.
#1 by vladiko
Задача найти определенные папки, разбросанные по реестру, и привести параметры в соответствие с помощью обработки. Затык - на обходе реестра.Зачем? Автоматически вычищать проявления ошибок платформы 1С, чтобы юзер не лазил туда ручками. Подскажите решение!
#2 by vladiko
Спецы! Неужели вариантов нет? А так хотелось "Шнобелевскую премию..!"PS. Поделюсь!
#3 by sdaf
ты с принтерами разобрался?
#4 by VZ
WSH не позволяет рекурсию, но 1С может вызывать функции рекурсивно, нет?
#5 by vladiko
-спасибо, что узнал меня, редко за советами обращаюсь, но настырно, этого не отнимешь... Разобрался в том, что не получается, хотя всем спасибо. Но так и не получил желаемого результата. Должно работать как-бы, но у меня "всегда готов"! Пока оставил тему, изучаю Рихтера.Теперь по теме - есть замороченный вариант циклов в цикле с помощью WMI..On Error Resume NextFor Each subkey In arrSubKeys  Names =Names & subkey & vbCrLfNextЭтот кусок выводит список только для rasdelstrKeyPath ,т.е по каждой строке Names опять цикл и т.д...., пока не наткнусь на нужную папку...Как то криво очень... Рекурсивную бы функцию....
#6 by vladiko
не знаю, что ответить.. не понял это вопрос или совет. Надо см. и все! Остальное дело техники. В застрял я !
#7 by vladiko
sdaf! Я тебе ответил. Кто по теме поможет советом "бывалых"!
#8 by vladiko
неужели придется писать рекурсию "циклы в циклах"? Боюсь комп перегреется.. Хоть на мысль натолкните!
#9 by smaharbA
а не просче выгрузить нужную ветку(ключь), поправить и загрузить обратно, можно все это и программно делать, так и быстрее будет, чем искать "то незнамо что" во всем реестре
#10 by vladiko
- проще, но не подходит! Куча баз, куча юзеров, вложенность искомого разная, ищу moxel, в них параметры проверяю на отрицательность и правлю.Проблема часто лезет, надо автоматизировать, а то только и лазишь по реестрам юзеров руками... (площадь охвата квадратные километры)!Короче, похоже от "ручной работы" просто так не уйти...? Ну где-же мысли коллективного разума?
#11 by Goldman
А кто мешает здесь применить простейший обход k-ичного дерева (ака Метод ветвей и границ)? Уж тут материала предостаточно. Это явно преподают в курсе алгоритмизации в любой программерской специальности... Материалов - дофига (спросите у яндекса)...А обход структуры дерева вложенными циками - уж извините меня - повод усомниться в адекватности умственного развития вопрошавшего...
#12 by pit
Квадратно-гнездовой способ посадки юзеров в лунки в действии...Не, ну нравится мне наш народ....P.S. исправь ошибки в конфах и забей... Остальное само наладится...
#13 by vladiko
- самоучка я! Специалисты редко на форумах сидят в качестве вопрошающих. Нарисуй пару строк для понимания, пожалуйста! Второй раз прошу - что в конфах править? Если параметры страницы явно указывать, так это я догадался. Или еще что-то?Ну помочь же прошу, а не диагноз психолога ставить!!!!!!!!!
#14 by vladiko
PS. Вот заметил - почти всегда - чего не спрошу, в лучшем случае обо..рут, в худшем - промолчат... или наоборот! Я ж не прошу конфу задаром написать, конкретные вопросы спрашиваю!
#15 by Goldman
Первая ссылка из яндекса на тему "обход деревьев" - >Даже в ней все необходимые блок-схемы присутствуют в явном виде, даже с примерами на c++.Дальше - больше... Рекурсивный алгоритм обхода структуры дерева находится за 5 минут. Переписать все это под любой другой язык - и вперед!
#16 by pit
Мне просто интересно... Исправит это или нет фирма в 4.67...Тогда и расскажем...
#17 by vladiko
PIT ! - Супер! Но я не виноват, что в моем колхозе поля квадратные...
#18 by vladiko
- Да у меня уже вся Буха переписана 3 года назад, только интересности добавляю. Все пашет, все ОК. Их недоработки уже не тревожат.. Все изменения делаю сам. И дело-то не в Бухи, а в платформе похоже, а ее сколько ждать?.... Подробнее про проблему подскажите! Хоть ссылкой! Надо мне! Надо! Премию хочу! (шучу, но серьезно, братцы!)
#19 by Goldman
ну зря ты так... я могу тебе совет дать - я его тебе даю... писать обход реестра - ну нет у меня времени просто на это. Я ж не пишу тебе письма типа - я даю конкретный совет (в первом абзаце все четко написано - и где спросить, и чего спросить) - как тебе НАПИСАТЬ то, что ты хочешь...Если ты изначально не можешь себе представить алгоритм, который на первом курсе преподается - то тогда дорога в библиотеку или магазин за "Искусством программирования" Д.Кнута... Или хотя бы, опять же, спроси у того же яндекса работы А.А.Шалыто - там, IMHO, разжевано все гораздо более просто, чем у Кнута.
#20 by Goldman
говорит о том, что вряд ли чего тебе уже поможет... с такими познаниями переписать все? Боюсь я за твою конфу... :(
#21 by vladiko
- не видел ! Иду на ссылку.... Но если кто сжалится над бывшим "трактористом", пишите конкретнее. Я еще вернусь! Спасибо!
#22 by vladiko
+ братцы! На ссылке все классно! Но это СИ!, а Карнегана и Ритчи я не успел дочитать... Скоро свет в колхозе выключат! Дайте хотя-бы сырой код для ! Премия пропадет, обещал к рассвету Председателю сделать... Спасибо!
#23 by vladiko
Свет отрубили...! Живу еще минут 10 на аккумуляторе от списанного трактора.. И пойду в избу, там есть новый аккумулятор, но нет интернета (телефона). Подскажите код, пока я с вами!!!!!
#24 by КонецЦикла
Пора подрубать дизель-генератор :(
#25 by vladiko
-а солярки нет! Выручайте, братцы!
#27 by vladiko
Спасибо всем, кто отозвался! Батарея сдохла.. Завтра возьму больничный, попытаюсь время потянуть.. ПРемию терять жалко.. Завтра повезет, уверен!Кто-нить отзовется..Проблема: Как получить дерево ключей и каталогов реестра. Просто нужно получить файл, содержащий дерево ключей и каталогов, для дальнейшей обработки в 1С:...hklm/hklm/Microsoft/hklm/Microsoft/Windows/...Hkcu/...т.е чем сделать рекурсивный обход реестра ?
#28 by smaharbA
делай, читай описания и хелпы(работает хотя рекурсия проверяется кривовато "Variant", нет желания шевелить мозгами)Dim rgSubconst HKEY_CURRENT_USER = &H80000001oReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeysFor Each subkey In arrSubKeysNextend function
#29 by smaharbA
+ поправочка Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\"&strComputer&" ootdefault:StdRegProv")(вообщето раньше не лез в WMI, предпочитаю "дедовские" методы выгрузка+загрузка нужных веток/ключей)
#30 by Jeronimo
Я бы написал нужную обработку где-нибудь не в 1с (да хоть в Delphi), а в 1с-ке бы ее вызывал как внешнее приложение... всяко не дольше будет...
#31 by vladiko
- спасибо, но если так:rgSub=arrSubKeysoReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeysFor Each subkey In arrSubKeysNames=Names&subkey&vbCrLfWScript.Echo (Names)....то выдает только список одного уровеня, как и , а рекурсии нет.Подскажите, где подправить...?
#32 by vladiko
+ не попадаю под условие if TypeName(rrSubKeys)="Variant" then !
#33 by smaharbA
слеш завершающий надо обязательно strKeyPath = "Software1C1Cv77.7"
#34 by vladiko
Тогда строка 17 символ 1 память заблокирована! - ошибка.
#35 by vladiko
+ после первого же попадания под условие if TypeName(rrSubKeys)="Variant" then !
#36 by smaharbA
Names=Names&strKeyPath&subkey&vbCrLfв начале только Names="" после Dim сразу
#37 by vladiko
smaharbA, что делать-то? чуть-чуть осталось чую, подумай, подскажи!
#38 by vladiko
rgSub=arrSubKeysoReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeysFor Each subkey In arrSubKeys'Names=Names&subkey&vbCrLfNames=Names&strKeyPath&subkey&vbCrLfWScript.Echo (Names).....Выдает одно окно Software1C1Cv77.7Basa, и опять ошибка :строка 14 символ 1 память заблокирована
#39 by vladiko
Почему и что за память блокируется? WinXPSP2, Администратор...
#40 by smaharbA
делай так, напишу как у меня робит (почти твое)Dim rgSubconst HKEY_CURRENT_USER = &H80000001Names=""oReg.EnumKey HKEY_CURRENT_USER, strKeyPath, arrSubKeysFor Each subkey In arrSubKeysNames=Names&strKeyPath&subkey&vbCrLf
#42 by vladiko
! Ящик что-то пустой.. Кинь пожалуйста! Разобраться хочу!
#44 by smaharbA
Немного поправил все равно работает, учесть только что ветвь HKEY_CURRENT_USER определяется только на локальной машинеstrComputer="localhost"For Each subkey In arrSubKeysNames=Names&strKeyPath&subkey&vbCrLfWScript.Echo Names(Показывает всю софтвару, даже по сети на 98, (конечно если ВМИ там нормальная))
#45 by vladiko
- спасибочки! Все хорошо! Только в oReg.EnumKey первый параметр в обоих строчках должен быть один и тотже! Спасибо всем!
#46 by vladiko
Дали премию за решение проблемы - два мешка бульбы!!!!smaharbA ! Куда выслать твой мешок?
#47 by vladiko
Так куда тушонку, тьфу(проговорился...) - картошку высылать?PS. Коллективный разум - великое дело, однако!
#50 by vladiko
тык ты офицер? Я тоже в запасе танкист.., потом тракторист... потом программист...
#51 by smaharbA
ушло, неа, знаешь как в той песне "какой ты нафиг танкист" вот этт про меня, не довелось служить (еще в краснознаменной) балель много, а вот пил/пъю еще больше...
#52 by smaharbA
"боец" - я так подчиненного называю (тссс, за глаза)
#53 by vladiko
Послал картошинку! Проверь целостность.
#54 by vladiko
+ проверить бы в картошине еще значения параметров на отрицательные, да и установить их в 0 ,и будет для всех форумистов решение с твоей помощью. Я когда доделаю, опубликую на форуме. Готов перейти на общение по мылу, чтоб не забивать форум. Согласен?
#55 by smaharbA
согласен, можно и по асйке 114928151, а все решения со скриптами мне интересны, пользуюсь в основном хелпами, поиском в инете не очч (как увижу кучю ссылок, сразу закрываю)
#56 by vladiko
аськи нет, к сожалению.. Так что на почту . Шлю очередную штучку, только аккуратней, проверь в ТЕМПЕ сначала.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С