Exemplo n.º 1
0
void print_registry_value(const struct registry_value *valvalue)
{
	d_printf("Type       = %s\n",
		 reg_type_lookup(valvalue->type));
	switch(valvalue->type) {
	case REG_DWORD:
		d_printf("Value      = %d\n", valvalue->v.dword);
		break;
	case REG_SZ:
	case REG_EXPAND_SZ:
		d_printf("Value      = \"%s\"\n", valvalue->v.sz.str);
		break;
	case REG_MULTI_SZ: {
		uint32 j;
		for (j = 0; j < valvalue->v.multi_sz.num_strings; j++) {
			d_printf("Value[%3.3d] = \"%s\"\n", j,
				 valvalue->v.multi_sz.strings[j]);
		}
		break;
	}
	case REG_BINARY:
		d_printf("Value      = %d bytes\n",
			 (int)valvalue->v.binary.length);
		break;
	default:
		d_printf("Value      = <unprintable>\n");
		break;
	}
}
void dump_reg_val(int lvl, const char *direction,
		  const char *key, const char *subkey,
		  struct registry_value *val)
{
	int i = 0;
	const char *type_str = NULL;

	if (!val) {
		DEBUG(lvl,("no val!\n"));
		return;
	}

	type_str = reg_type_lookup(val->type);

	DEBUG(lvl,("\tdump_reg_val:\t%s '%s'\n\t\t\t'%s' %s: ",
		direction, key, subkey, type_str));

	switch (val->type) {
		case REG_DWORD:
			DEBUG(lvl,("%d (0x%08x)\n",
				(int)val->v.dword, val->v.dword));
			break;
		case REG_QWORD:
			DEBUG(lvl,("%d (0x%016llx)\n",
				(int)val->v.qword,
				(unsigned long long)val->v.qword));
			break;
		case REG_SZ:
			DEBUG(lvl,("%s (length: %d)\n",
				   val->v.sz.str,
				   (int)val->v.sz.len));
			break;
		case REG_MULTI_SZ:
			DEBUG(lvl,("(num_strings: %d)\n",
				   val->v.multi_sz.num_strings));
			for (i=0; i < val->v.multi_sz.num_strings; i++) {
				DEBUGADD(lvl,("\t%s\n",
					val->v.multi_sz.strings[i]));
			}
			break;
		case REG_NONE:
			DEBUG(lvl,("\n"));
			break;
		case REG_BINARY:
			dump_data(lvl, val->v.binary.data,
				  val->v.binary.length);
			break;
		default:
			DEBUG(lvl,("unsupported type: %d\n", val->type));
			break;
	}
}