Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > хочется осуществить поиск по реестру не прибегая к


Автор: FasterHarder 19.9.2007, 17:08
Всем программистам привет! Respect! В общем не подскажите идею как можно осуществлять поиск по реестру(реестр я построил + добавление/удаление узлов). Как я понимаю(достаточно сделать поиск только по названию узла), возможно необходимо просто пробегать по всему дереву и сравнивать фильтрующее значение с каждым узлом(думаю будет долговато)  или как то еще. Нашел пример в инете, где предлагают юзать WinApi, но хочется к нему не прибегать. Подскажите как быть то, может есть какие то легкие не стандартные решения?

Автор: tea_723 19.9.2007, 18:29
А чем тебя пространство My.Computer.Registry не устраивает? Например My.Computer.Registry.Users.GetSubKeyNames() вернет тебе массив строк с именами всех ключей в разделе HKEY_USERS...

Автор: FasterHarder 19.9.2007, 19:46
что то пространство имен My.Computer не вижу(может в 2003 есть подобное), я юзаю Microsoft.Win32.Registry. Я  знаю метод:
Код

string[] s = Registry.Users.GetSubKeyNames();

но фишка то в том, что возвращается только узлы второго уровня(а количество уровней может быть infinity). Т е необходимо пробегать по всем узлам как то рекурсионно. В общем...? 

Автор: FasterHarder 20.9.2007, 10:21
и еще один вопрос в догонку:

в общем допустим стою я на третем уровне иерархии HKEY_CURRENT_USER(EventLabels), затем программно добавляю новый простой узел и делаю такую весчь:
Код

tree_Nodes.Nodes[tree_Nodes.SelectedNode.Index].Collapse();
tree_Nodes.Nodes[tree_Nodes.SelectedNode.Index].Expand();

+ рефрешь. Новый узел становиться видимым(также видна эта же ветка). Затем если добавляю еще один узел, то после добавление у меня раскрывается только самый базовый уровень иерархии(а должен оставаться текущий). Также у меня есть такая весчь:
Код

//================================================================
        // Намерение: достроить дерево(соответствующие узлы) при раскрытии родительского узла
        //================================================================
        private void tree_Nodes_BeforeExpand(object sender, TreeViewCancelEventArgs e)
        {
            tree_Nodes.BeginUpdate();
            BuildTree(e.Node, 1);
            tree_Nodes.EndUpdate();
        }

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

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