+// HRESULT key;
+//HRESULT openKey(LPSTR stdInput)
+// key = openKey("HKEY_CLASSES_ROOT");
+//LPSTR getRegKeyName(LPSTR lpLine);
+//HKEY getRegClass(LPSTR lpLine);
+// closeKey();
+
+#define MAX_NAME_LEN 500
+
+ HKEY hKey;
+ LONG errCode;
+ Entry* pPrevEntry;
+ Entry* pEntry = &pRoot->entry;
+ HTREEITEM hRootItem;
+
+// TCHAR* pHostName = _T("My Computer");
+// HTREEITEM hRootItem = AddItemToTree(hwndTV, pHostName, 1);
+// pEntry = malloc(sizeof(Entry));
+// memset(pEntry, 0, sizeof(Entry));
+// memset(pEntry, 0, sizeof(Entry));
+ //insert_tree_entries(hwndTV, pEntry, 0);
+ pEntry->level = 0;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, pRoot->path);
+ hRootItem = pEntry->hTreeItem;
+ pPrevEntry = pEntry;
+//HTREEITEM AddItemToTree(HWND hwndTV, LPTSTR lpszItem, int nLevel)
+//HTREEITEM AddEntryToTree(HWND hwndTV, Entry* entry)
+//static void insert_tree_entries(HWND hWnd, Entry* entry, int idx)
+
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = &pRoot->entry;
+ pEntry->level = 1;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, _T("HKEY_CLASSES_ROOT"));
+
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = &pRoot->entry;
+ pEntry->level = 1;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, _T("HKEY_CURRENT_USER"));
+
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = &pRoot->entry;
+ pEntry->level = 1;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, _T("HKEY_LOCAL_MACHINE"));
+
+ pPrevEntry = pEntry;
+
+ errCode = RegOpenKeyEx(HKEY_LOCAL_MACHINE, NULL, 0, KEY_READ, &hKey);
+ if (errCode == ERROR_SUCCESS) {
+ TCHAR Name[MAX_NAME_LEN];
+ TCHAR Class[MAX_NAME_LEN];
+ FILETIME LastWriteTime;
+ DWORD dwIndex = 0L;
+ DWORD cName = MAX_NAME_LEN;
+ DWORD cClass = MAX_NAME_LEN;
+ while (RegEnumKeyEx(hKey, dwIndex, Name, &cName, NULL, Class, &cClass, &LastWriteTime) == ERROR_SUCCESS) {
+ //AddItemToTree(hwndTV, Name, 2);
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = pPrevEntry;
+ pEntry->hKey = hKey;
+ pEntry->bKey = TRUE;
+ //insert_tree_entries(hwndTV, pEntry, 0);
+ pEntry->level = 2;
+// pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, Name);
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, NULL);
+ cName = MAX_NAME_LEN;
+ cClass = MAX_NAME_LEN;
+ ++dwIndex;
+ }
+ RegCloseKey(hKey);
+ TreeView_Expand(hwndTV, hRootItem, TVE_EXPAND);
+ }
+
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = &pRoot->entry;
+ pEntry->level = 1;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, _T("HKEY_USERS"));
+
+ pEntry = malloc(sizeof(Entry));
+ memset(pEntry, 0, sizeof(Entry));
+ pEntry->up = &pRoot->entry;
+ pEntry->level = 1;
+ pEntry->hTreeItem = AddEntryToTree(hwndTV, pEntry, _T("HKEY_CURRENT_CONFIG"));
+