' Registry browser using the MGCEWin32, MGCEListView and MGCETreeView ' controls. Written by Mark Gamber using NS Basic. CLASSES_ROOT = 0 CURRENT_USER = 1 LOCAL_MACHINE =2 iWidth = OUTPUT.width / 2 addobject "MGCEWin32.Registry", "Registry", 0, 0, 0, 0 addobject "MGCETreeView.TreeView", "Tree", 2, 0, iWidth - 3, OUTPUT.height addobject "MGCEListView.ListView", "List", iWidth + 1, 0, iWidth - 2, OUTPUT.height Tree.AllowEdit = TRUE List.View = 1 List.InsertColumn 1, "Name", 50, 0 List.InsertColumn 2, "Type", 50, 0 List.InsertColumn 3, "Value", 100, 0 topItem = Tree.AddItem( 0, topItem, "Classes", 0 ) Tree.AddItem topItem, 0, "", -1 topItem = Tree.AddItem( 0, topItem, "Current User", 0 ) Tree.AddItem topItem, 0, "", -1 topItem = Tree.AddItem( 0, topItem, "Local Machine", 0 ) Tree.AddItem topItem, 0, "", -1 sub Tree_Expanding( item ) child = Tree.Child( item ) if Tree.ItemValue( child ) = -1 then s = Tree.TreePath( Tree.Parent( child ) ) Tree.DeleteItem( child ) i = InStr( 1, s, "\" ) if i > 0 then root = Left( s, i - 1) else root = s end if if root = "Classes" then Registry.Key = CLASSES_ROOT if root = "Current User" then Registry.Key = CURRENT_USER if root = "Local Machine" then Registry.Key = LOCAL_MACHINE if i > 0 then path = Mid( s, i + 1 ) else path = "" end if Registry.Path = path newItem = 0 i = 0 on error resume next while Err.number = 0 s = Registry.GetPathName( i ) if Err.number = 0 then newItem = Tree.AddItem( item, newItem, s, 0 ) Tree.AddItem newItem, 0, "", -1 i = i + 1 end if wend Err.Clear end if end sub sub Tree_Changing( oldItem, newItem ) if Tree.ItemText( newItem ) <> "" then s = Tree.TreePath( newItem ) i = InStr( 1, s, "\" ) if i > 0 then root = left( s, i - 1 ) Registry.Path = Mid( s, i + 1 ) else root = s Registry.Path = "" end if if root = "Classes" then Registry.Key = CLASSES_ROOT if root = "Current User" then Registry.Key = CURRENT_USER if root = "Local Machine" then Registry.Key = LOCAL_MACHINE i = 0 on error resume next Err.Clear List.Clear while Err.number = 0 s = Registry.GetValueName( i ) Registry.Name = s if Err.number = 0 then List.InsertItem 1, s, 0, 0 t = Registry.ValueType if t = 1 then List.SetItem 1, 2, "String", 0, 0 List.SetItem 1, 3, Registry.Value, 0, 0 end if if t = 3 then List.SetItem 1, 2, "Binary", 0, 0 v = Registry.Value if Len ( v ) > 20 then v = Left( v, 20 ) & "..." List.SetItem 1, 3, v, 0, 0 end if if t = 4 then List.SetItem 1, 2, "Dword", 0, 0 v = CStr( Registry.Value ) List.SetItem 1, 3, v, 0, 0 end if if t = 7 then List.SetItem 1, 2, "Array", 0, 0 v = Registry.Value List.SetItem 1, 3, v( 1 ), 0, 0 end if end if i = i + 1 wend end if end sub