1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <wchar.h>
5 #include <windows.h>
6
main(int argc,char ** argv)7 int main( int argc, char **argv ) {
8 ULONG ResultSize;
9 PWCHAR WcharResult;
10 WCHAR ValueNameWC[100];
11 PCHAR CharResult;
12 HKEY RegKey;
13 int i;
14
15 if( argc < 2 ) {
16 printf( "Usage: regqueryvalue [key] [value]\n" );
17 printf( "Returns an HKEY_LOCAL_MACHINE value from the given key.\n" );
18 return 1;
19 }
20
21 if ( RegOpenKeyExA( HKEY_LOCAL_MACHINE, argv[1], 0, KEY_READ, &RegKey )
22 != 0 ) {
23 printf( "Could not open key %s\n", argv[1] );
24 return 2;
25 }
26
27 for( i = 0; argv[2][i]; i++ ) ValueNameWC[i] = argv[2][i];
28 ValueNameWC[i] = 0;
29
30 if(RegQueryValueExW( RegKey, ValueNameWC, NULL, NULL, NULL, &ResultSize )
31 != 0) {
32 printf( "The value %S does not exist.\n", ValueNameWC );
33 return 5;
34 }
35
36 WcharResult = malloc( (ResultSize + 1) * sizeof(WCHAR) );
37
38 if( !WcharResult ) {
39 printf( "Could not alloc %d wchars\n", (int)(ResultSize + 1) );
40 return 6;
41 }
42
43 RegQueryValueExW( RegKey, ValueNameWC, NULL, NULL, (LPBYTE)WcharResult,
44 &ResultSize );
45
46 printf( "wchar Value: %S\n", WcharResult );
47 fflush( stdout );
48
49 RegQueryValueExA( RegKey, argv[2], NULL, NULL, NULL, &ResultSize );
50
51 CharResult = malloc( ResultSize + 1 );
52
53 if( !CharResult ) {
54 printf( "Could not alloc %d chars\n", (int)(ResultSize + 1) );
55 return 7;
56 }
57
58 RegQueryValueExA( RegKey, argv[2], NULL, NULL, (PBYTE)CharResult, &ResultSize );
59
60 printf( " char Value: %s\n", CharResult );
61 fflush( stdout );
62
63 free( WcharResult );
64 free( CharResult );
65
66 return 0;
67 }
68