1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
#include <windows.h>
#include <stdio.h>
void print( HKEY, TCHAR *, FILE * );
int main( int argc, TCHAR *argv[] ){
if( argc < 2 ){
return;
}
FILE *fp = fopen( argv[1], "w" );
HKEY v1;
long ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT( "SOFTWARE\\VOCALOID" ), 0, KEY_READ, &v1 );
if( ret == ERROR_SUCCESS ){
print( v1, "HKLM\\SOFTWARE\\VOCALOID", fp );
RegCloseKey( v1 );
}
HKEY v2;
ret = RegOpenKeyEx( HKEY_LOCAL_MACHINE, TEXT( "SOFTWARE\\VOCALOID2" ), 0, KEY_READ, &v2 );
if( ret == ERROR_SUCCESS ){
print( v2, "HKLM\\SOFTWARE\\VOCALOID2", fp );
}
fclose( fp );
}
// WXgkey̒lċAIɌAt@Cfpɏo͂
void print( HKEY key, TCHAR *parent_name, FILE *fp ){
DWORD i;
for( i = 0; ; i++ ){
TCHAR key_name[MAX_PATH];
key_name[0] = 0;
DWORD key_name_size = MAX_PATH;
FILETIME ft;
LONG ret = RegEnumKeyEx( key, i, key_name, &key_name_size, NULL, NULL, NULL, &ft );
if( ret != ERROR_SUCCESS ){
break;
}
HKEY key_child;
ret = RegOpenKeyEx( key, key_name, 0, KEY_READ, &key_child );
if( ret != ERROR_SUCCESS ){
RegCloseKey( key_child );
continue;
}
TCHAR next_parent[MAX_PATH];
next_parent[0] = 0;
strcat( next_parent, parent_name );
strcat( next_parent, TEXT("\\") );
strcat( next_parent, key_name );
print( key_child, next_parent, fp );
RegCloseKey( key_child );
}
for( i = 0; ; i++ ){
TCHAR value_name[MAX_PATH];
value_name[0] = 0;
DWORD value_name_size = MAX_PATH;
DWORD value_type = REG_SZ;
BYTE value[MAX_PATH];
value[0] = 0;
DWORD value_size = MAX_PATH;
LONG ret = RegEnumValue( key, i, value_name, &value_name_size, NULL, &value_type, value, &value_size );
if( ret != ERROR_SUCCESS ){
break;
}
if( value_type == REG_SZ ){
fprintf( fp, "%s\t%s\t%s\n", parent_name, value_name, (char *)value );
}else{
//fprintf( fp, "%s\\%s\n", parent_name, value_name );
}
}
}
|