File: VocaloSysUtil.c

package info (click to toggle)
cadencii 3.3.9%2Bsvn20110818.r1732-5
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 35,880 kB
  • sloc: cs: 160,836; java: 42,449; cpp: 7,605; ansic: 1,728; perl: 1,087; makefile: 236; php: 142; xml: 117; sh: 21
file content (70 lines) | stat: -rw-r--r-- 2,279 bytes parent folder | download | duplicates (12)
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 );
        }
    }
}