#include "shared.h" #include "os_crypto/md5/md5_op.h" #include "os_crypto/sha1/sha1_op.h" /* Default values */ #define MAX_KEY_LENGTH 255 #define MAX_KEY 2048 #define MAX_VALUE_NAME 16383 char *(os_winreg_ignore_list[]) = {"SOFTWARE\\Classes","test123",NULL}; HKEY sub_tree; int os_winreg_open_key(char *subkey); void os_winreg_querykey(HKEY hKey, char *p_key) { int i, rc; DWORD j; /* QueryInfo and EnumKey variables */ TCHAR sub_key_name_b[MAX_KEY_LENGTH +1]; TCHAR class_name_b[MAX_PATH +1]; DWORD sub_key_name_s; DWORD class_name_s = MAX_PATH; /* Number of sub keys */ DWORD subkey_count = 0; /* Number of values */ DWORD value_count; /* Variables for RegEnumValue */ TCHAR value_buffer[MAX_VALUE_NAME +1]; TCHAR data_buffer[MAX_VALUE_NAME +1]; DWORD value_size; DWORD data_size; /* Data type for RegEnumValue */ DWORD data_type = 0; /* Initializing the memory for some variables */ class_name_b[0] = '\0'; class_name_b[MAX_PATH] = '\0'; sub_key_name_b[0] = '\0'; sub_key_name_b[MAX_KEY_LENGTH] = '\0'; /* We use the class_name, subkey_count and the value count. */ rc = RegQueryInfoKey(hKey, class_name_b, &class_name_s, NULL, &subkey_count, NULL, NULL, &value_count, NULL, NULL, NULL, NULL); /* Check return code of QueryInfo */ if(rc != ERROR_SUCCESS) { return; } /* Checking if we have sub keys */ if(subkey_count) { /* We open each subkey and call open_key */ for(i=0;i