0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20 ********\.*
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0060: 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 72 65 winre
0070: 67 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 20 g.d
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 *.*
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 *.*
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50 Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20 I header module
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 *.*
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 *.*
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66 Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77 rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20 s headers
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20 *.*
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61 by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20 rt Gordon
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 *.*
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69 Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 n
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32 **/.module win32
02f0: 2e 77 69 6e 72 65 67 3b 0a 70 72 61 67 6d 61 28 .winreg;.pragma(
0300: 6c 69 62 2c 20 22 61 64 76 61 70 69 33 32 2e 6c lib, "advapi32.l
0310: 69 62 22 29 3b 0a 0a 70 72 69 76 61 74 65 20 69 ib");..private i
0320: 6d 70 6f 72 74 20 77 69 6e 33 32 2e 77 33 32 61 mport win32.w32a
0330: 70 69 2c 20 77 69 6e 33 32 2e 77 69 6e 62 61 73 pi, win32.winbas
0340: 65 2c 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b e, win32.windef;
0350: 0a 0a 63 6f 6e 73 74 20 48 4b 45 59 0a 09 48 4b ..const HKEY..HK
0360: 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 20 EY_CLASSES_ROOT
0370: 20 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 = cast(HKEY)
0380: 20 30 78 38 30 30 30 30 30 30 30 2c 0a 09 48 4b 0x80000000,..HK
0390: 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 20 EY_CURRENT_USER
03a0: 20 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 = cast(HKEY)
03b0: 20 30 78 38 30 30 30 30 30 30 31 2c 0a 09 48 4b 0x80000001,..HK
03c0: 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 EY_LOCAL_MACHINE
03d0: 20 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 = cast(HKEY)
03e0: 20 30 78 38 30 30 30 30 30 30 32 2c 0a 09 48 4b 0x80000002,..HK
03f0: 45 59 5f 55 53 45 52 53 20 20 20 20 20 20 20 20 EY_USERS
0400: 20 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 = cast(HKEY)
0410: 20 30 78 38 30 30 30 30 30 30 33 2c 0a 09 48 4b 0x80000003,..HK
0420: 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45 5f 44 EY_PERFORMANCE_D
0430: 41 54 41 20 3d 20 63 61 73 74 28 48 4b 45 59 29 ATA = cast(HKEY)
0440: 20 30 78 38 30 30 30 30 30 30 34 2c 0a 09 48 4b 0x80000004,..HK
0450: 45 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46 49 EY_CURRENT_CONFI
0460: 47 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 G = cast(HKEY)
0470: 20 30 78 38 30 30 30 30 30 30 35 2c 0a 09 48 4b 0x80000005,..HK
0480: 45 59 5f 44 59 4e 5f 44 41 54 41 20 20 20 20 20 EY_DYN_DATA
0490: 20 20 20 20 3d 20 63 61 73 74 28 48 4b 45 59 29 = cast(HKEY)
04a0: 20 30 78 38 30 30 30 30 30 30 36 3b 0a 0a 65 6e 0x80000006;..en
04b0: 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09 52 45 um : DWORD {..RE
04c0: 47 5f 4f 50 54 49 4f 4e 5f 4e 4f 4e 5f 56 4f 4c G_OPTION_NON_VOL
04d0: 41 54 49 4c 45 2c 0a 09 52 45 47 5f 4f 50 54 49 ATILE,..REG_OPTI
04e0: 4f 4e 5f 56 4f 4c 41 54 49 4c 45 0a 7d 0a 0a 65 ON_VOLATILE.}..e
04f0: 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09 52 num : DWORD {..R
0500: 45 47 5f 43 52 45 41 54 45 44 5f 4e 45 57 5f 4b EG_CREATED_NEW_K
0510: 45 59 20 3d 20 31 2c 0a 09 52 45 47 5f 4f 50 45 EY = 1,..REG_OPE
0520: 4e 45 44 5f 45 58 49 53 54 49 4e 47 5f 4b 45 59 NED_EXISTING_KEY
0530: 0a 7d 0a 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 .}..enum : DWORD
0540: 20 7b 0a 09 52 45 47 5f 4e 4f 4e 45 20 20 20 20 {..REG_NONE
0550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0560: 20 20 20 3d 20 30 2c 0a 09 52 45 47 5f 53 5a 2c = 0,..REG_SZ,
0570: 0a 09 52 45 47 5f 45 58 50 41 4e 44 5f 53 5a 2c ..REG_EXPAND_SZ,
0580: 0a 09 52 45 47 5f 42 49 4e 41 52 59 2c 0a 09 52 ..REG_BINARY,..R
0590: 45 47 5f 44 57 4f 52 44 5f 4c 49 54 54 4c 45 5f EG_DWORD_LITTLE_
05a0: 45 4e 44 49 41 4e 2c 0a 09 52 45 47 5f 44 57 4f ENDIAN,..REG_DWO
05b0: 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20 RD
05c0: 20 20 20 20 20 20 20 20 3d 20 52 45 47 5f 44 57 = REG_DW
05d0: 4f 52 44 5f 4c 49 54 54 4c 45 5f 45 4e 44 49 41 ORD_LITTLE_ENDIA
05e0: 4e 2c 0a 09 52 45 47 5f 44 57 4f 52 44 5f 42 49 N,..REG_DWORD_BI
05f0: 47 5f 45 4e 44 49 41 4e 2c 0a 09 52 45 47 5f 4c G_ENDIAN,..REG_L
0600: 49 4e 4b 2c 0a 09 52 45 47 5f 4d 55 4c 54 49 5f INK,..REG_MULTI_
0610: 53 5a 2c 0a 09 52 45 47 5f 52 45 53 4f 55 52 43 SZ,..REG_RESOURC
0620: 45 5f 4c 49 53 54 2c 0a 09 52 45 47 5f 46 55 4c E_LIST,..REG_FUL
0630: 4c 5f 52 45 53 4f 55 52 43 45 5f 44 45 53 43 52 L_RESOURCE_DESCR
0640: 49 50 54 4f 52 2c 0a 09 52 45 47 5f 52 45 53 4f IPTOR,..REG_RESO
0650: 55 52 43 45 5f 52 45 51 55 49 52 45 4d 45 4e 54 URCE_REQUIREMENT
0660: 53 5f 4c 49 53 54 2c 0a 09 52 45 47 5f 51 57 4f S_LIST,..REG_QWO
0670: 52 44 5f 4c 49 54 54 4c 45 5f 45 4e 44 49 41 4e RD_LITTLE_ENDIAN
0680: 2c 0a 09 52 45 47 5f 51 57 4f 52 44 20 20 20 20 ,..REG_QWORD
0690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
06a0: 20 20 3d 20 52 45 47 5f 51 57 4f 52 44 5f 4c 49 = REG_QWORD_LI
06b0: 54 54 4c 45 5f 45 4e 44 49 41 4e 0a 7d 0a 0a 63 TTLE_ENDIAN.}..c
06c0: 6f 6e 73 74 20 44 57 4f 52 44 0a 09 52 45 47 5f onst DWORD..REG_
06d0: 4e 4f 54 49 46 59 5f 43 48 41 4e 47 45 5f 4e 41 NOTIFY_CHANGE_NA
06e0: 4d 45 20 20 20 20 20 20 20 3d 20 31 2c 0a 09 52 ME = 1,..R
06f0: 45 47 5f 4e 4f 54 49 46 59 5f 43 48 41 4e 47 45 EG_NOTIFY_CHANGE
0700: 5f 41 54 54 52 49 42 55 54 45 53 20 3d 20 32 2c _ATTRIBUTES = 2,
0710: 0a 09 52 45 47 5f 4e 4f 54 49 46 59 5f 43 48 41 ..REG_NOTIFY_CHA
0720: 4e 47 45 5f 4c 41 53 54 5f 53 45 54 20 20 20 3d NGE_LAST_SET =
0730: 20 34 2c 0a 09 52 45 47 5f 4e 4f 54 49 46 59 5f 4,..REG_NOTIFY_
0740: 43 48 41 4e 47 45 5f 53 45 43 55 52 49 54 59 20 CHANGE_SECURITY
0750: 20 20 3d 20 38 3b 0a 0a 61 6c 69 61 73 20 41 43 = 8;..alias AC
0760: 43 45 53 53 5f 4d 41 53 4b 20 52 45 47 53 41 4d CESS_MASK REGSAM
0770: 3b 0a 0a 73 74 72 75 63 74 20 56 41 4c 45 4e 54 ;..struct VALENT
0780: 41 20 7b 0a 09 4c 50 53 54 52 20 76 65 5f 76 61 A {..LPSTR ve_va
0790: 6c 75 65 6e 61 6d 65 3b 0a 09 44 57 4f 52 44 20 luename;..DWORD
07a0: 76 65 5f 76 61 6c 75 65 6c 65 6e 3b 0a 09 44 57 ve_valuelen;..DW
07b0: 4f 52 44 20 76 65 5f 76 61 6c 75 65 70 74 72 3b ORD ve_valueptr;
07c0: 0a 09 44 57 4f 52 44 20 76 65 5f 74 79 70 65 3b ..DWORD ve_type;
07d0: 0a 7d 0a 61 6c 69 61 73 20 56 41 4c 45 4e 54 41 .}.alias VALENTA
07e0: 2a 20 50 56 41 4c 45 4e 54 41 3b 0a 0a 73 74 72 * PVALENTA;..str
07f0: 75 63 74 20 56 41 4c 45 4e 54 57 20 7b 0a 09 4c uct VALENTW {..L
0800: 50 57 53 54 52 20 76 65 5f 76 61 6c 75 65 6e 61 PWSTR ve_valuena
0810: 6d 65 3b 0a 09 44 57 4f 52 44 20 20 76 65 5f 76 me;..DWORD ve_v
0820: 61 6c 75 65 6c 65 6e 3b 0a 09 44 57 4f 52 44 20 aluelen;..DWORD
0830: 20 76 65 5f 76 61 6c 75 65 70 74 72 3b 0a 09 44 ve_valueptr;..D
0840: 57 4f 52 44 20 20 76 65 5f 74 79 70 65 3b 0a 7d WORD ve_type;.}
0850: 0a 61 6c 69 61 73 20 56 41 4c 45 4e 54 57 2a 20 .alias VALENTW*
0860: 50 56 41 4c 45 4e 54 57 3b 0a 0a 2f 2f 20 52 52 PVALENTW;..// RR
0870: 46 20 2d 20 52 65 67 69 73 74 72 79 20 52 6f 75 F - Registry Rou
0880: 74 69 6e 65 20 46 6c 61 67 73 20 28 66 6f 72 20 tine Flags (for
0890: 52 65 67 47 65 74 56 61 6c 75 65 29 0a 73 74 61 RegGetValue).sta
08a0: 74 69 63 20 69 66 20 28 57 49 4e 56 45 52 20 3e tic if (WINVER >
08b0: 3d 20 30 78 36 30 30 29 20 7b 0a 09 65 6e 75 6d = 0x600) {..enum
08c0: 20 3a 20 44 57 4f 52 44 20 7b 0a 09 09 52 52 46 : DWORD {...RRF
08d0: 5f 52 54 5f 52 45 47 5f 4e 4f 4e 45 20 20 20 20 _RT_REG_NONE
08e0: 20 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c 0a = 0x00000001,.
08f0: 09 09 52 52 46 5f 52 54 5f 52 45 47 5f 53 5a 20 ..RRF_RT_REG_SZ
0900: 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 = 0x00000
0910: 30 30 32 2c 0a 09 09 52 52 46 5f 52 54 5f 52 45 002,...RRF_RT_RE
0920: 47 5f 45 58 50 41 4e 44 5f 53 5a 20 3d 20 30 78 G_EXPAND_SZ = 0x
0930: 30 30 30 30 30 30 30 34 2c 0a 09 09 52 52 46 5f 00000004,...RRF_
0940: 52 54 5f 52 45 47 5f 42 49 4e 41 52 59 20 20 20 RT_REG_BINARY
0950: 20 3d 20 30 78 30 30 30 30 30 30 30 38 2c 0a 09 = 0x00000008,..
0960: 09 52 52 46 5f 52 54 5f 52 45 47 5f 44 57 4f 52 .RRF_RT_REG_DWOR
0970: 44 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 D = 0x000000
0980: 31 30 2c 0a 09 09 52 52 46 5f 52 54 5f 52 45 47 10,...RRF_RT_REG
0990: 5f 4d 55 4c 54 49 5f 53 5a 20 20 3d 20 30 78 30 _MULTI_SZ = 0x0
09a0: 30 30 30 30 30 32 30 2c 0a 09 09 52 52 46 5f 52 0000020,...RRF_R
09b0: 54 5f 52 45 47 5f 51 57 4f 52 44 20 20 20 20 20 T_REG_QWORD
09c0: 3d 20 30 78 30 30 30 30 30 30 34 30 2c 0a 09 09 = 0x00000040,...
09d0: 52 52 46 5f 52 54 5f 44 57 4f 52 44 20 20 20 20 RRF_RT_DWORD
09e0: 20 20 20 20 20 3d 20 52 52 46 5f 52 54 5f 52 45 = RRF_RT_RE
09f0: 47 5f 42 49 4e 41 52 59 20 7c 20 52 52 46 5f 52 G_BINARY | RRF_R
0a00: 54 5f 52 45 47 5f 44 57 4f 52 44 2c 0a 09 09 52 T_REG_DWORD,...R
0a10: 52 46 5f 52 54 5f 51 57 4f 52 44 20 20 20 20 20 RF_RT_QWORD
0a20: 20 20 20 20 3d 20 52 52 46 5f 52 54 5f 52 45 47 = RRF_RT_REG
0a30: 5f 42 49 4e 41 52 59 20 7c 20 52 52 46 5f 52 54 _BINARY | RRF_RT
0a40: 5f 52 45 47 5f 51 57 4f 52 44 2c 0a 09 09 52 52 _REG_QWORD,...RR
0a50: 46 5f 52 54 5f 41 4e 59 20 20 20 20 20 20 20 20 F_RT_ANY
0a60: 20 20 20 3d 20 30 78 30 30 30 30 46 46 46 46 2c = 0x0000FFFF,
0a70: 0a 09 09 52 52 46 5f 4e 4f 45 58 50 41 4e 44 20 ...RRF_NOEXPAND
0a80: 20 20 20 20 20 20 20 20 3d 20 30 78 31 30 30 30 = 0x1000
0a90: 30 30 30 30 2c 0a 09 09 52 52 46 5f 5a 45 52 4f 0000,...RRF_ZERO
0aa0: 4f 4e 46 41 49 4c 55 52 45 20 20 20 20 3d 20 30 ONFAILURE = 0
0ab0: 78 32 30 30 30 30 30 30 30 0a 09 7d 0a 7d 0a 0a x20000000..}.}..
0ac0: 65 78 74 65 72 6e 20 28 57 69 6e 64 6f 77 73 29 extern (Windows)
0ad0: 20 7b 0a 09 4c 4f 4e 47 20 52 65 67 43 6c 6f 73 {..LONG RegClos
0ae0: 65 4b 65 79 28 48 4b 45 59 29 3b 0a 09 4c 4f 4e eKey(HKEY);..LON
0af0: 47 20 52 65 67 43 6f 6e 6e 65 63 74 52 65 67 69 G RegConnectRegi
0b00: 73 74 72 79 41 28 4c 50 43 53 54 52 2c 20 48 4b stryA(LPCSTR, HK
0b10: 45 59 2c 20 50 48 4b 45 59 29 3b 0a 09 4c 4f 4e EY, PHKEY);..LON
0b20: 47 20 52 65 67 43 6f 6e 6e 65 63 74 52 65 67 69 G RegConnectRegi
0b30: 73 74 72 79 57 28 4c 50 43 57 53 54 52 2c 20 48 stryW(LPCWSTR, H
0b40: 4b 45 59 2c 20 50 48 4b 45 59 29 3b 0a 09 4c 4f KEY, PHKEY);..LO
0b50: 4e 47 20 52 65 67 43 72 65 61 74 65 4b 65 79 45 NG RegCreateKeyE
0b60: 78 41 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 2c xA(HKEY, LPCSTR,
0b70: 20 44 57 4f 52 44 2c 20 4c 50 53 54 52 2c 20 44 DWORD, LPSTR, D
0b80: 57 4f 52 44 2c 20 52 45 47 53 41 4d 2c 0a 09 20 WORD, REGSAM,..
0b90: 20 4c 50 53 45 43 55 52 49 54 59 5f 41 54 54 52 LPSECURITY_ATTR
0ba0: 49 42 55 54 45 53 2c 20 50 48 4b 45 59 2c 20 50 IBUTES, PHKEY, P
0bb0: 44 57 4f 52 44 29 3b 0a 09 4c 4f 4e 47 20 52 65 DWORD);..LONG Re
0bc0: 67 43 72 65 61 74 65 4b 65 79 45 78 57 28 48 4b gCreateKeyExW(HK
0bd0: 45 59 2c 20 4c 50 43 57 53 54 52 2c 20 44 57 4f EY, LPCWSTR, DWO
0be0: 52 44 2c 20 4c 50 57 53 54 52 2c 20 44 57 4f 52 RD, LPWSTR, DWOR
0bf0: 44 2c 20 52 45 47 53 41 4d 2c 0a 09 20 20 4c 50 D, REGSAM,.. LP
0c00: 53 45 43 55 52 49 54 59 5f 41 54 54 52 49 42 55 SECURITY_ATTRIBU
0c10: 54 45 53 2c 20 50 48 4b 45 59 2c 20 50 44 57 4f TES, PHKEY, PDWO
0c20: 52 44 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 44 65 RD);..LONG RegDe
0c30: 6c 65 74 65 4b 65 79 41 28 48 4b 45 59 2c 20 4c leteKeyA(HKEY, L
0c40: 50 43 53 54 52 29 3b 0a 09 4c 4f 4e 47 20 52 65 PCSTR);..LONG Re
0c50: 67 44 65 6c 65 74 65 4b 65 79 57 28 48 4b 45 59 gDeleteKeyW(HKEY
0c60: 2c 20 4c 50 43 57 53 54 52 29 3b 0a 09 4c 4f 4e , LPCWSTR);..LON
0c70: 47 20 52 65 67 44 65 6c 65 74 65 56 61 6c 75 65 G RegDeleteValue
0c80: 41 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 29 3b A(HKEY, LPCSTR);
0c90: 0a 09 4c 4f 4e 47 20 52 65 67 44 65 6c 65 74 65 ..LONG RegDelete
0ca0: 56 61 6c 75 65 57 28 48 4b 45 59 2c 20 4c 50 43 ValueW(HKEY, LPC
0cb0: 57 53 54 52 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 WSTR);..LONG Reg
0cc0: 45 6e 75 6d 4b 65 79 45 78 41 28 48 4b 45 59 2c EnumKeyExA(HKEY,
0cd0: 20 44 57 4f 52 44 2c 20 4c 50 53 54 52 2c 20 50 DWORD, LPSTR, P
0ce0: 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 4c DWORD, PDWORD, L
0cf0: 50 53 54 52 2c 20 50 44 57 4f 52 44 2c 0a 09 20 PSTR, PDWORD,..
0d00: 20 50 46 49 4c 45 54 49 4d 45 29 3b 0a 09 4c 4f PFILETIME);..LO
0d10: 4e 47 20 52 65 67 45 6e 75 6d 4b 65 79 45 78 57 NG RegEnumKeyExW
0d20: 28 48 4b 45 59 2c 20 44 57 4f 52 44 2c 20 4c 50 (HKEY, DWORD, LP
0d30: 57 53 54 52 2c 20 50 44 57 4f 52 44 2c 20 50 44 WSTR, PDWORD, PD
0d40: 57 4f 52 44 2c 20 4c 50 57 53 54 52 2c 20 50 44 WORD, LPWSTR, PD
0d50: 57 4f 52 44 2c 0a 09 20 20 50 46 49 4c 45 54 49 WORD,.. PFILETI
0d60: 4d 45 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 45 6e ME);..LONG RegEn
0d70: 75 6d 56 61 6c 75 65 41 28 48 4b 45 59 2c 20 44 umValueA(HKEY, D
0d80: 57 4f 52 44 2c 20 4c 50 53 54 52 2c 20 50 44 57 WORD, LPSTR, PDW
0d90: 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 44 57 ORD, PDWORD, PDW
0da0: 4f 52 44 2c 20 4c 50 42 59 54 45 2c 0a 09 20 20 ORD, LPBYTE,..
0db0: 50 44 57 4f 52 44 29 3b 0a 09 4c 4f 4e 47 20 52 PDWORD);..LONG R
0dc0: 65 67 45 6e 75 6d 56 61 6c 75 65 57 28 48 4b 45 egEnumValueW(HKE
0dd0: 59 2c 20 44 57 4f 52 44 2c 20 4c 50 57 53 54 52 Y, DWORD, LPWSTR
0de0: 2c 20 50 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 , PDWORD, PDWORD
0df0: 2c 20 50 44 57 4f 52 44 2c 20 4c 50 42 59 54 45 , PDWORD, LPBYTE
0e00: 2c 0a 09 20 20 50 44 57 4f 52 44 29 3b 0a 09 4c ,.. PDWORD);..L
0e10: 4f 4e 47 20 52 65 67 46 6c 75 73 68 4b 65 79 28 ONG RegFlushKey(
0e20: 48 4b 45 59 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 HKEY);..LONG Reg
0e30: 4c 6f 61 64 4b 65 79 41 28 48 4b 45 59 2c 20 4c LoadKeyA(HKEY, L
0e40: 50 43 53 54 52 2c 20 4c 50 43 53 54 52 29 3b 0a PCSTR, LPCSTR);.
0e50: 09 4c 4f 4e 47 20 52 65 67 4c 6f 61 64 4b 65 79 .LONG RegLoadKey
0e60: 57 28 48 4b 45 59 2c 20 4c 50 43 57 53 54 52 2c W(HKEY, LPCWSTR,
0e70: 20 4c 50 43 57 53 54 52 29 3b 0a 09 4c 4f 4e 47 LPCWSTR);..LONG
0e80: 20 52 65 67 4f 70 65 6e 4b 65 79 45 78 41 28 48 RegOpenKeyExA(H
0e90: 4b 45 59 2c 20 4c 50 43 53 54 52 2c 20 44 57 4f KEY, LPCSTR, DWO
0ea0: 52 44 2c 20 52 45 47 53 41 4d 2c 20 50 48 4b 45 RD, REGSAM, PHKE
0eb0: 59 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 4f 70 65 Y);..LONG RegOpe
0ec0: 6e 4b 65 79 45 78 57 28 48 4b 45 59 2c 20 4c 50 nKeyExW(HKEY, LP
0ed0: 43 57 53 54 52 2c 20 44 57 4f 52 44 2c 20 52 45 CWSTR, DWORD, RE
0ee0: 47 53 41 4d 2c 20 50 48 4b 45 59 29 3b 0a 09 4c GSAM, PHKEY);..L
0ef0: 4f 4e 47 20 52 65 67 51 75 65 72 79 49 6e 66 6f ONG RegQueryInfo
0f00: 4b 65 79 41 28 48 4b 45 59 2c 20 4c 50 53 54 52 KeyA(HKEY, LPSTR
0f10: 2c 20 50 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 , PDWORD, PDWORD
0f20: 2c 20 50 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 , PDWORD, PDWORD
0f30: 2c 0a 09 20 20 50 44 57 4f 52 44 2c 20 50 44 57 ,.. PDWORD, PDW
0f40: 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 44 57 ORD, PDWORD, PDW
0f50: 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 46 49 ORD, PDWORD, PFI
0f60: 4c 45 54 49 4d 45 29 3b 0a 09 4c 4f 4e 47 20 52 LETIME);..LONG R
0f70: 65 67 51 75 65 72 79 49 6e 66 6f 4b 65 79 57 28 egQueryInfoKeyW(
0f80: 48 4b 45 59 2c 20 4c 50 57 53 54 52 2c 20 50 44 HKEY, LPWSTR, PD
0f90: 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 44 WORD, PDWORD, PD
0fa0: 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c 0a 09 20 WORD, PDWORD,..
0fb0: 20 50 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c PDWORD, PDWORD,
0fc0: 20 50 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c PDWORD, PDWORD,
0fd0: 20 50 44 57 4f 52 44 2c 20 50 46 49 4c 45 54 49 PDWORD, PFILETI
0fe0: 4d 45 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 51 75 ME);..LONG RegQu
0ff0: 65 72 79 4d 75 6c 74 69 70 6c 65 56 61 6c 75 65 eryMultipleValue
1000: 73 41 28 48 4b 45 59 2c 20 50 56 41 4c 45 4e 54 sA(HKEY, PVALENT
1010: 41 2c 20 44 57 4f 52 44 2c 20 4c 50 53 54 52 2c A, DWORD, LPSTR,
1020: 20 4c 50 44 57 4f 52 44 29 3b 0a 09 4c 4f 4e 47 LPDWORD);..LONG
1030: 20 52 65 67 51 75 65 72 79 4d 75 6c 74 69 70 6c RegQueryMultipl
1040: 65 56 61 6c 75 65 73 57 28 48 4b 45 59 2c 20 50 eValuesW(HKEY, P
1050: 56 41 4c 45 4e 54 57 2c 20 44 57 4f 52 44 2c 20 VALENTW, DWORD,
1060: 4c 50 57 53 54 52 2c 20 4c 50 44 57 4f 52 44 29 LPWSTR, LPDWORD)
1070: 3b 0a 09 4c 4f 4e 47 20 52 65 67 51 75 65 72 79 ;..LONG RegQuery
1080: 56 61 6c 75 65 45 78 41 28 48 4b 45 59 2c 20 4c ValueExA(HKEY, L
1090: 50 43 53 54 52 2c 20 4c 50 44 57 4f 52 44 2c 20 PCSTR, LPDWORD,
10a0: 4c 50 44 57 4f 52 44 2c 20 4c 50 42 59 54 45 2c LPDWORD, LPBYTE,
10b0: 20 4c 50 44 57 4f 52 44 29 3b 0a 09 4c 4f 4e 47 LPDWORD);..LONG
10c0: 20 52 65 67 51 75 65 72 79 56 61 6c 75 65 45 78 RegQueryValueEx
10d0: 57 28 48 4b 45 59 2c 20 4c 50 43 57 53 54 52 2c W(HKEY, LPCWSTR,
10e0: 20 4c 50 44 57 4f 52 44 2c 20 4c 50 44 57 4f 52 LPDWORD, LPDWOR
10f0: 44 2c 20 4c 50 42 59 54 45 2c 20 4c 50 44 57 4f D, LPBYTE, LPDWO
1100: 52 44 29 3b 0a 09 4c 4f 4e 47 20 52 65 67 52 65 RD);..LONG RegRe
1110: 70 6c 61 63 65 4b 65 79 41 28 48 4b 45 59 2c 20 placeKeyA(HKEY,
1120: 4c 50 43 53 54 52 2c 20 4c 50 43 53 54 52 2c 20 LPCSTR, LPCSTR,
1130: 4c 50 43 53 54 52 29 3b 0a 09 4c 4f 4e 47 20 52 LPCSTR);..LONG R
1140: 65 67 52 65 70 6c 61 63 65 4b 65 79 57 28 48 4b egReplaceKeyW(HK
1150: 45 59 2c 20 4c 50 43 57 53 54 52 2c 20 4c 50 43 EY, LPCWSTR, LPC
1160: 57 53 54 52 2c 20 4c 50 43 57 53 54 52 29 3b 0a WSTR, LPCWSTR);.
1170: 09 4c 4f 4e 47 20 52 65 67 53 61 76 65 4b 65 79 .LONG RegSaveKey
1180: 41 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 2c 20 A(HKEY, LPCSTR,
1190: 4c 50 53 45 43 55 52 49 54 59 5f 41 54 54 52 49 LPSECURITY_ATTRI
11a0: 42 55 54 45 53 29 3b 0a 09 4c 4f 4e 47 20 52 65 BUTES);..LONG Re
11b0: 67 53 61 76 65 4b 65 79 57 28 48 4b 45 59 2c 20 gSaveKeyW(HKEY,
11c0: 4c 50 43 57 53 54 52 2c 20 4c 50 53 45 43 55 52 LPCWSTR, LPSECUR
11d0: 49 54 59 5f 41 54 54 52 49 42 55 54 45 53 29 3b ITY_ATTRIBUTES);
11e0: 0a 09 4c 4f 4e 47 20 52 65 67 53 65 74 4b 65 79 ..LONG RegSetKey
11f0: 53 65 63 75 72 69 74 79 28 48 4b 45 59 2c 20 53 Security(HKEY, S
1200: 45 43 55 52 49 54 59 5f 49 4e 46 4f 52 4d 41 54 ECURITY_INFORMAT
1210: 49 4f 4e 2c 20 50 53 45 43 55 52 49 54 59 5f 44 ION, PSECURITY_D
1220: 45 53 43 52 49 50 54 4f 52 29 3b 0a 09 4c 4f 4e ESCRIPTOR);..LON
1230: 47 20 52 65 67 53 65 74 56 61 6c 75 65 45 78 41 G RegSetValueExA
1240: 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 2c 20 44 (HKEY, LPCSTR, D
1250: 57 4f 52 44 2c 20 44 57 4f 52 44 2c 20 43 50 74 WORD, DWORD, CPt
1260: 72 21 28 42 59 54 45 29 2c 20 44 57 4f 52 44 29 r!(BYTE), DWORD)
1270: 3b 0a 09 4c 4f 4e 47 20 52 65 67 53 65 74 56 61 ;..LONG RegSetVa
1280: 6c 75 65 45 78 57 28 48 4b 45 59 2c 20 4c 50 43 lueExW(HKEY, LPC
1290: 57 53 54 52 2c 20 44 57 4f 52 44 2c 20 44 57 4f WSTR, DWORD, DWO
12a0: 52 44 2c 20 43 50 74 72 21 28 42 59 54 45 29 2c RD, CPtr!(BYTE),
12b0: 20 44 57 4f 52 44 29 3b 0a 09 4c 4f 4e 47 20 52 DWORD);..LONG R
12c0: 65 67 55 6e 4c 6f 61 64 4b 65 79 41 28 48 4b 45 egUnLoadKeyA(HKE
12d0: 59 2c 20 4c 50 43 53 54 52 29 3b 0a 09 4c 4f 4e Y, LPCSTR);..LON
12e0: 47 20 52 65 67 55 6e 4c 6f 61 64 4b 65 79 57 28 G RegUnLoadKeyW(
12f0: 48 4b 45 59 2c 20 4c 50 43 57 53 54 52 29 3b 0a HKEY, LPCWSTR);.
1300: 09 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 4e .static if (_WIN
1310: 33 32 5f 57 49 4e 44 4f 57 53 20 3e 3d 20 30 78 32_WINDOWS >= 0x
1320: 34 31 30 29 20 7b 0a 09 09 4c 4f 4e 47 20 52 65 410) {...LONG Re
1330: 67 4e 6f 74 69 66 79 43 68 61 6e 67 65 4b 65 79 gNotifyChangeKey
1340: 56 61 6c 75 65 28 48 4b 45 59 2c 20 42 4f 4f 4c Value(HKEY, BOOL
1350: 2c 20 44 57 4f 52 44 2c 20 48 41 4e 44 4c 45 2c , DWORD, HANDLE,
1360: 20 42 4f 4f 4c 29 3b 0a 09 7d 0a 0a 09 73 74 61 BOOL);..}...sta
1370: 74 69 63 20 69 66 20 28 5f 57 49 4e 33 32 5f 57 tic if (_WIN32_W
1380: 49 4e 4e 54 5f 4f 4e 4c 59 29 20 7b 0a 09 09 42 INNT_ONLY) {...B
1390: 4f 4f 4c 20 41 62 6f 72 74 53 79 73 74 65 6d 53 OOL AbortSystemS
13a0: 68 75 74 64 6f 77 6e 41 28 4c 50 43 53 54 52 29 hutdownA(LPCSTR)
13b0: 3b 0a 09 09 42 4f 4f 4c 20 41 62 6f 72 74 53 79 ;...BOOL AbortSy
13c0: 73 74 65 6d 53 68 75 74 64 6f 77 6e 57 28 4c 50 stemShutdownW(LP
13d0: 43 57 53 54 52 29 3b 0a 09 09 42 4f 4f 4c 20 49 CWSTR);...BOOL I
13e0: 6e 69 74 69 61 74 65 53 79 73 74 65 6d 53 68 75 nitiateSystemShu
13f0: 74 64 6f 77 6e 41 28 4c 50 53 54 52 2c 20 4c 50 tdownA(LPSTR, LP
1400: 53 54 52 2c 20 44 57 4f 52 44 2c 20 42 4f 4f 4c STR, DWORD, BOOL
1410: 2c 20 42 4f 4f 4c 29 3b 0a 09 09 42 4f 4f 4c 20 , BOOL);...BOOL
1420: 49 6e 69 74 69 61 74 65 53 79 73 74 65 6d 53 68 InitiateSystemSh
1430: 75 74 64 6f 77 6e 57 28 4c 50 57 53 54 52 2c 20 utdownW(LPWSTR,
1440: 4c 50 57 53 54 52 2c 20 44 57 4f 52 44 2c 20 42 LPWSTR, DWORD, B
1450: 4f 4f 4c 2c 20 42 4f 4f 4c 29 3b 0a 09 09 4c 4f OOL, BOOL);...LO
1460: 4e 47 20 52 65 67 47 65 74 4b 65 79 53 65 63 75 NG RegGetKeySecu
1470: 72 69 74 79 28 48 4b 45 59 2c 20 53 45 43 55 52 rity(HKEY, SECUR
1480: 49 54 59 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 2c ITY_INFORMATION,
1490: 0a 09 09 20 20 50 53 45 43 55 52 49 54 59 5f 44 ... PSECURITY_D
14a0: 45 53 43 52 49 50 54 4f 52 2c 20 50 44 57 4f 52 ESCRIPTOR, PDWOR
14b0: 44 29 3b 0a 09 09 4c 4f 4e 47 20 52 65 67 52 65 D);...LONG RegRe
14c0: 73 74 6f 72 65 4b 65 79 41 28 48 4b 45 59 2c 20 storeKeyA(HKEY,
14d0: 4c 50 43 53 54 52 2c 20 44 57 4f 52 44 29 3b 0a LPCSTR, DWORD);.
14e0: 09 09 4c 4f 4e 47 20 52 65 67 52 65 73 74 6f 72 ..LONG RegRestor
14f0: 65 4b 65 79 57 28 48 4b 45 59 2c 20 4c 50 43 57 eKeyW(HKEY, LPCW
1500: 53 54 52 2c 20 44 57 4f 52 44 29 3b 0a 09 09 4c STR, DWORD);...L
1510: 4f 4e 47 20 52 65 67 53 65 74 4b 65 79 53 65 63 ONG RegSetKeySec
1520: 75 72 69 74 79 28 48 4b 45 59 2c 20 53 45 43 55 urity(HKEY, SECU
1530: 52 49 54 59 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e RITY_INFORMATION
1540: 2c 0a 09 09 20 20 50 53 45 43 55 52 49 54 59 5f ,... PSECURITY_
1550: 44 45 53 43 52 49 50 54 4f 52 29 3b 0a 0a 09 09 DESCRIPTOR);....
1560: 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 4e 33 static if (_WIN3
1570: 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 35 30 30 2_WINNT >= 0x500
1580: 29 20 7b 0a 09 09 09 4c 4f 4e 47 20 52 65 67 44 ) {....LONG RegD
1590: 69 73 61 62 6c 65 50 72 65 64 65 66 69 6e 65 64 isablePredefined
15a0: 43 61 63 68 65 28 29 3b 0a 09 09 09 4c 4f 4e 47 Cache();....LONG
15b0: 20 52 65 67 4f 70 65 6e 43 75 72 72 65 6e 74 55 RegOpenCurrentU
15c0: 73 65 72 28 52 45 47 53 41 4d 2c 20 50 48 4b 45 ser(REGSAM, PHKE
15d0: 59 29 3b 0a 09 09 09 4c 4f 4e 47 20 52 65 67 4f Y);....LONG RegO
15e0: 70 65 6e 55 73 65 72 43 6c 61 73 73 65 73 52 6f penUserClassesRo
15f0: 6f 74 28 48 41 4e 44 4c 45 2c 20 44 57 4f 52 44 ot(HANDLE, DWORD
1600: 2c 20 52 45 47 53 41 4d 2c 20 50 48 4b 45 59 29 , REGSAM, PHKEY)
1610: 3b 0a 09 09 7d 0a 0a 09 09 73 74 61 74 69 63 20 ;...}....static
1620: 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 if (_WIN32_WINNT
1630: 20 3e 3d 20 30 78 35 30 31 29 20 7b 0a 09 09 09 >= 0x501) {....
1640: 4c 4f 4e 47 20 52 65 67 53 61 76 65 4b 65 79 45 LONG RegSaveKeyE
1650: 78 41 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 2c xA(HKEY, LPCSTR,
1660: 20 4c 50 53 45 43 55 52 49 54 59 5f 41 54 54 52 LPSECURITY_ATTR
1670: 49 42 55 54 45 53 2c 20 44 57 4f 52 44 29 3b 0a IBUTES, DWORD);.
1680: 09 09 09 4c 4f 4e 47 20 52 65 67 53 61 76 65 4b ...LONG RegSaveK
1690: 65 79 45 78 57 28 48 4b 45 59 2c 20 4c 50 43 57 eyExW(HKEY, LPCW
16a0: 53 54 52 2c 20 4c 50 53 45 43 55 52 49 54 59 5f STR, LPSECURITY_
16b0: 41 54 54 52 49 42 55 54 45 53 2c 20 44 57 4f 52 ATTRIBUTES, DWOR
16c0: 44 29 3b 0a 09 09 7d 0a 0a 09 09 73 74 61 74 69 D);...}....stati
16d0: 63 20 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e c if (_WIN32_WIN
16e0: 4e 54 20 3e 3d 20 30 78 36 30 30 29 20 7b 0a 09 NT >= 0x600) {..
16f0: 09 09 4c 4f 4e 47 20 52 65 67 47 65 74 56 61 6c ..LONG RegGetVal
1700: 75 65 41 28 48 4b 45 59 20 68 6b 65 79 2c 20 4c ueA(HKEY hkey, L
1710: 50 43 53 54 52 20 6c 70 53 75 62 4b 65 79 2c 20 PCSTR lpSubKey,
1720: 4c 50 43 53 54 52 20 6c 70 56 61 6c 75 65 2c 0a LPCSTR lpValue,.
1730: 09 09 09 20 20 44 57 4f 52 44 20 64 77 46 6c 61 ... DWORD dwFla
1740: 67 73 2c 20 4c 50 44 57 4f 52 44 20 70 64 77 54 gs, LPDWORD pdwT
1750: 79 70 65 2c 20 50 56 4f 49 44 20 70 76 44 61 74 ype, PVOID pvDat
1760: 61 2c 20 4c 50 44 57 4f 52 44 20 70 63 62 44 61 a, LPDWORD pcbDa
1770: 74 61 29 3b 0a 09 09 09 4c 4f 4e 47 20 52 65 67 ta);....LONG Reg
1780: 47 65 74 56 61 6c 75 65 57 28 48 4b 45 59 20 68 GetValueW(HKEY h
1790: 6b 65 79 2c 20 4c 50 43 57 53 54 52 20 6c 70 53 key, LPCWSTR lpS
17a0: 75 62 4b 65 79 2c 20 4c 50 43 57 53 54 52 20 6c ubKey, LPCWSTR l
17b0: 70 56 61 6c 75 65 2c 0a 09 09 09 20 20 44 57 4f pValue,.... DWO
17c0: 52 44 20 64 77 46 6c 61 67 73 2c 20 4c 50 44 57 RD dwFlags, LPDW
17d0: 4f 52 44 20 70 64 77 54 79 70 65 2c 20 50 56 4f ORD pdwType, PVO
17e0: 49 44 20 70 76 44 61 74 61 2c 20 4c 50 44 57 4f ID pvData, LPDWO
17f0: 52 44 20 70 63 62 44 61 74 61 29 3b 0a 09 09 7d RD pcbData);...}
1800: 0a 09 7d 0a 0a 09 64 65 70 72 65 63 61 74 65 64 ..}...deprecated
1810: 20 7b 0a 09 09 4c 4f 4e 47 20 52 65 67 43 72 65 {...LONG RegCre
1820: 61 74 65 4b 65 79 41 28 48 4b 45 59 2c 20 4c 50 ateKeyA(HKEY, LP
1830: 43 53 54 52 2c 20 50 48 4b 45 59 29 3b 0a 09 09 CSTR, PHKEY);...
1840: 4c 4f 4e 47 20 52 65 67 43 72 65 61 74 65 4b 65 LONG RegCreateKe
1850: 79 57 28 48 4b 45 59 2c 20 4c 50 43 57 53 54 52 yW(HKEY, LPCWSTR
1860: 2c 20 50 48 4b 45 59 29 3b 0a 09 09 4c 4f 4e 47 , PHKEY);...LONG
1870: 20 52 65 67 45 6e 75 6d 4b 65 79 41 28 48 4b 45 RegEnumKeyA(HKE
1880: 59 2c 20 44 57 4f 52 44 2c 20 4c 50 53 54 52 2c Y, DWORD, LPSTR,
1890: 20 44 57 4f 52 44 29 3b 0a 09 09 4c 4f 4e 47 20 DWORD);...LONG
18a0: 52 65 67 45 6e 75 6d 4b 65 79 57 28 48 4b 45 59 RegEnumKeyW(HKEY
18b0: 2c 20 44 57 4f 52 44 2c 20 4c 50 57 53 54 52 2c , DWORD, LPWSTR,
18c0: 20 44 57 4f 52 44 29 3b 0a 09 09 4c 4f 4e 47 20 DWORD);...LONG
18d0: 52 65 67 4f 70 65 6e 4b 65 79 41 28 48 4b 45 59 RegOpenKeyA(HKEY
18e0: 2c 20 4c 50 43 53 54 52 2c 20 50 48 4b 45 59 29 , LPCSTR, PHKEY)
18f0: 3b 0a 09 09 4c 4f 4e 47 20 52 65 67 4f 70 65 6e ;...LONG RegOpen
1900: 4b 65 79 57 28 48 4b 45 59 2c 20 4c 50 43 57 53 KeyW(HKEY, LPCWS
1910: 54 52 2c 20 50 48 4b 45 59 29 3b 0a 09 09 4c 4f TR, PHKEY);...LO
1920: 4e 47 20 52 65 67 51 75 65 72 79 56 61 6c 75 65 NG RegQueryValue
1930: 41 28 48 4b 45 59 2c 20 4c 50 43 53 54 52 2c 20 A(HKEY, LPCSTR,
1940: 4c 50 53 54 52 2c 20 50 4c 4f 4e 47 29 3b 0a 09 LPSTR, PLONG);..
1950: 09 4c 4f 4e 47 20 52 65 67 51 75 65 72 79 56 61 .LONG RegQueryVa
1960: 6c 75 65 57 28 48 4b 45 59 2c 20 4c 50 43 57 53 lueW(HKEY, LPCWS
1970: 54 52 2c 20 4c 50 57 53 54 52 2c 20 50 4c 4f 4e TR, LPWSTR, PLON
1980: 47 29 3b 0a 09 09 4c 4f 4e 47 20 52 65 67 53 65 G);...LONG RegSe
1990: 74 56 61 6c 75 65 41 28 48 4b 45 59 2c 20 4c 50 tValueA(HKEY, LP
19a0: 43 53 54 52 2c 20 44 57 4f 52 44 2c 20 4c 50 43 CSTR, DWORD, LPC
19b0: 53 54 52 2c 20 44 57 4f 52 44 29 3b 0a 09 09 4c STR, DWORD);...L
19c0: 4f 4e 47 20 52 65 67 53 65 74 56 61 6c 75 65 57 ONG RegSetValueW
19d0: 28 48 4b 45 59 2c 20 4c 50 43 57 53 54 52 2c 20 (HKEY, LPCWSTR,
19e0: 44 57 4f 52 44 2c 20 4c 50 43 57 53 54 52 2c 20 DWORD, LPCWSTR,
19f0: 44 57 4f 52 44 29 3b 0a 09 7d 0a 7d 0a 0a 76 65 DWORD);..}.}..ve
1a00: 72 73 69 6f 6e 20 28 55 6e 69 63 6f 64 65 29 20 rsion (Unicode)
1a10: 7b 0a 09 61 6c 69 61 73 20 56 41 4c 45 4e 54 57 {..alias VALENTW
1a20: 20 56 41 4c 45 4e 54 3b 0a 09 61 6c 69 61 73 20 VALENT;..alias
1a30: 52 65 67 43 6f 6e 6e 65 63 74 52 65 67 69 73 74 RegConnectRegist
1a40: 72 79 57 20 52 65 67 43 6f 6e 6e 65 63 74 52 65 ryW RegConnectRe
1a50: 67 69 73 74 72 79 3b 0a 09 61 6c 69 61 73 20 52 gistry;..alias R
1a60: 65 67 43 72 65 61 74 65 4b 65 79 45 78 57 20 52 egCreateKeyExW R
1a70: 65 67 43 72 65 61 74 65 4b 65 79 45 78 3b 0a 09 egCreateKeyEx;..
1a80: 61 6c 69 61 73 20 52 65 67 44 65 6c 65 74 65 4b alias RegDeleteK
1a90: 65 79 57 20 52 65 67 44 65 6c 65 74 65 4b 65 79 eyW RegDeleteKey
1aa0: 3b 0a 09 61 6c 69 61 73 20 52 65 67 44 65 6c 65 ;..alias RegDele
1ab0: 74 65 56 61 6c 75 65 57 20 52 65 67 44 65 6c 65 teValueW RegDele
1ac0: 74 65 56 61 6c 75 65 3b 0a 09 61 6c 69 61 73 20 teValue;..alias
1ad0: 52 65 67 45 6e 75 6d 4b 65 79 45 78 57 20 52 65 RegEnumKeyExW Re
1ae0: 67 45 6e 75 6d 4b 65 79 45 78 3b 0a 09 61 6c 69 gEnumKeyEx;..ali
1af0: 61 73 20 52 65 67 45 6e 75 6d 56 61 6c 75 65 57 as RegEnumValueW
1b00: 20 52 65 67 45 6e 75 6d 56 61 6c 75 65 3b 0a 09 RegEnumValue;..
1b10: 61 6c 69 61 73 20 52 65 67 4c 6f 61 64 4b 65 79 alias RegLoadKey
1b20: 57 20 52 65 67 4c 6f 61 64 4b 65 79 3b 0a 09 61 W RegLoadKey;..a
1b30: 6c 69 61 73 20 52 65 67 4f 70 65 6e 4b 65 79 45 lias RegOpenKeyE
1b40: 78 57 20 52 65 67 4f 70 65 6e 4b 65 79 45 78 3b xW RegOpenKeyEx;
1b50: 0a 09 61 6c 69 61 73 20 52 65 67 51 75 65 72 79 ..alias RegQuery
1b60: 49 6e 66 6f 4b 65 79 57 20 52 65 67 51 75 65 72 InfoKeyW RegQuer
1b70: 79 49 6e 66 6f 4b 65 79 3b 0a 09 61 6c 69 61 73 yInfoKey;..alias
1b80: 20 52 65 67 51 75 65 72 79 4d 75 6c 74 69 70 6c RegQueryMultipl
1b90: 65 56 61 6c 75 65 73 57 20 52 65 67 51 75 65 72 eValuesW RegQuer
1ba0: 79 4d 75 6c 74 69 70 6c 65 56 61 6c 75 65 73 3b yMultipleValues;
1bb0: 0a 09 61 6c 69 61 73 20 52 65 67 51 75 65 72 79 ..alias RegQuery
1bc0: 56 61 6c 75 65 45 78 57 20 52 65 67 51 75 65 72 ValueExW RegQuer
1bd0: 79 56 61 6c 75 65 45 78 3b 0a 09 61 6c 69 61 73 yValueEx;..alias
1be0: 20 52 65 67 52 65 70 6c 61 63 65 4b 65 79 57 20 RegReplaceKeyW
1bf0: 52 65 67 52 65 70 6c 61 63 65 4b 65 79 3b 0a 09 RegReplaceKey;..
1c00: 61 6c 69 61 73 20 52 65 67 53 61 76 65 4b 65 79 alias RegSaveKey
1c10: 57 20 52 65 67 53 61 76 65 4b 65 79 3b 0a 09 61 W RegSaveKey;..a
1c20: 6c 69 61 73 20 52 65 67 53 65 74 56 61 6c 75 65 lias RegSetValue
1c30: 45 78 57 20 52 65 67 53 65 74 56 61 6c 75 65 45 ExW RegSetValueE
1c40: 78 3b 0a 09 61 6c 69 61 73 20 52 65 67 55 6e 4c x;..alias RegUnL
1c50: 6f 61 64 4b 65 79 57 20 52 65 67 55 6e 4c 6f 61 oadKeyW RegUnLoa
1c60: 64 4b 65 79 3b 0a 0a 09 73 74 61 74 69 63 20 69 dKey;...static i
1c70: 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 5f f (_WIN32_WINNT_
1c80: 4f 4e 4c 59 29 20 7b 0a 09 09 61 6c 69 61 73 20 ONLY) {...alias
1c90: 41 62 6f 72 74 53 79 73 74 65 6d 53 68 75 74 64 AbortSystemShutd
1ca0: 6f 77 6e 57 20 41 62 6f 72 74 53 79 73 74 65 6d ownW AbortSystem
1cb0: 53 68 75 74 64 6f 77 6e 3b 0a 09 09 61 6c 69 61 Shutdown;...alia
1cc0: 73 20 49 6e 69 74 69 61 74 65 53 79 73 74 65 6d s InitiateSystem
1cd0: 53 68 75 74 64 6f 77 6e 57 20 49 6e 69 74 69 61 ShutdownW Initia
1ce0: 74 65 53 79 73 74 65 6d 53 68 75 74 64 6f 77 6e teSystemShutdown
1cf0: 3b 0a 09 09 61 6c 69 61 73 20 52 65 67 52 65 73 ;...alias RegRes
1d00: 74 6f 72 65 4b 65 79 57 20 52 65 67 52 65 73 74 toreKeyW RegRest
1d10: 6f 72 65 4b 65 79 3b 0a 09 09 73 74 61 74 69 63 oreKey;...static
1d20: 20 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e if (_WIN32_WINN
1d30: 54 20 3e 3d 20 30 78 35 30 31 29 20 7b 0a 09 09 T >= 0x501) {...
1d40: 09 61 6c 69 61 73 20 52 65 67 53 61 76 65 4b 65 .alias RegSaveKe
1d50: 79 45 78 41 20 52 65 67 53 61 76 65 4b 65 79 45 yExA RegSaveKeyE
1d60: 78 3b 0a 09 09 7d 0a 09 09 73 74 61 74 69 63 20 x;...}...static
1d70: 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 if (_WIN32_WINNT
1d80: 20 3e 3d 20 30 78 36 30 30 29 20 7b 0a 09 09 09 >= 0x600) {....
1d90: 61 6c 69 61 73 20 52 65 67 47 65 74 56 61 6c 75 alias RegGetValu
1da0: 65 57 20 52 65 67 47 65 74 56 61 6c 75 65 3b 0a eW RegGetValue;.
1db0: 09 09 7d 0a 09 7d 0a 09 64 65 70 72 65 63 61 74 ..}..}..deprecat
1dc0: 65 64 20 7b 0a 09 09 61 6c 69 61 73 20 52 65 67 ed {...alias Reg
1dd0: 43 72 65 61 74 65 4b 65 79 57 20 52 65 67 43 72 CreateKeyW RegCr
1de0: 65 61 74 65 4b 65 79 3b 0a 09 09 61 6c 69 61 73 eateKey;...alias
1df0: 20 52 65 67 45 6e 75 6d 4b 65 79 57 20 52 65 67 RegEnumKeyW Reg
1e00: 45 6e 75 6d 4b 65 79 3b 0a 09 09 61 6c 69 61 73 EnumKey;...alias
1e10: 20 52 65 67 4f 70 65 6e 4b 65 79 57 20 52 65 67 RegOpenKeyW Reg
1e20: 4f 70 65 6e 4b 65 79 3b 0a 09 09 61 6c 69 61 73 OpenKey;...alias
1e30: 20 52 65 67 51 75 65 72 79 56 61 6c 75 65 57 20 RegQueryValueW
1e40: 52 65 67 51 75 65 72 79 56 61 6c 75 65 3b 0a 09 RegQueryValue;..
1e50: 09 61 6c 69 61 73 20 52 65 67 53 65 74 56 61 6c .alias RegSetVal
1e60: 75 65 57 20 52 65 67 53 65 74 56 61 6c 75 65 3b ueW RegSetValue;
1e70: 0a 09 7d 0a 7d 20 65 6c 73 65 20 7b 0a 09 61 6c ..}.} else {..al
1e80: 69 61 73 20 56 41 4c 45 4e 54 41 20 56 41 4c 45 ias VALENTA VALE
1e90: 4e 54 3b 0a 09 61 6c 69 61 73 20 52 65 67 43 6f NT;..alias RegCo
1ea0: 6e 6e 65 63 74 52 65 67 69 73 74 72 79 41 20 52 nnectRegistryA R
1eb0: 65 67 43 6f 6e 6e 65 63 74 52 65 67 69 73 74 72 egConnectRegistr
1ec0: 79 3b 0a 09 61 6c 69 61 73 20 52 65 67 43 72 65 y;..alias RegCre
1ed0: 61 74 65 4b 65 79 45 78 41 20 52 65 67 43 72 65 ateKeyExA RegCre
1ee0: 61 74 65 4b 65 79 45 78 3b 0a 09 61 6c 69 61 73 ateKeyEx;..alias
1ef0: 20 52 65 67 44 65 6c 65 74 65 4b 65 79 41 20 52 RegDeleteKeyA R
1f00: 65 67 44 65 6c 65 74 65 4b 65 79 3b 0a 09 61 6c egDeleteKey;..al
1f10: 69 61 73 20 52 65 67 44 65 6c 65 74 65 56 61 6c ias RegDeleteVal
1f20: 75 65 41 20 52 65 67 44 65 6c 65 74 65 56 61 6c ueA RegDeleteVal
1f30: 75 65 3b 0a 09 61 6c 69 61 73 20 52 65 67 45 6e ue;..alias RegEn
1f40: 75 6d 4b 65 79 45 78 41 20 52 65 67 45 6e 75 6d umKeyExA RegEnum
1f50: 4b 65 79 45 78 3b 0a 09 61 6c 69 61 73 20 52 65 KeyEx;..alias Re
1f60: 67 45 6e 75 6d 56 61 6c 75 65 41 20 52 65 67 45 gEnumValueA RegE
1f70: 6e 75 6d 56 61 6c 75 65 3b 0a 09 61 6c 69 61 73 numValue;..alias
1f80: 20 52 65 67 4c 6f 61 64 4b 65 79 41 20 52 65 67 RegLoadKeyA Reg
1f90: 4c 6f 61 64 4b 65 79 3b 0a 09 61 6c 69 61 73 20 LoadKey;..alias
1fa0: 52 65 67 4f 70 65 6e 4b 65 79 45 78 41 20 52 65 RegOpenKeyExA Re
1fb0: 67 4f 70 65 6e 4b 65 79 45 78 3b 0a 09 61 6c 69 gOpenKeyEx;..ali
1fc0: 61 73 20 52 65 67 51 75 65 72 79 49 6e 66 6f 4b as RegQueryInfoK
1fd0: 65 79 41 20 52 65 67 51 75 65 72 79 49 6e 66 6f eyA RegQueryInfo
1fe0: 4b 65 79 3b 0a 09 61 6c 69 61 73 20 52 65 67 51 Key;..alias RegQ
1ff0: 75 65 72 79 4d 75 6c 74 69 70 6c 65 56 61 6c 75 ueryMultipleValu
2000: 65 73 41 20 52 65 67 51 75 65 72 79 4d 75 6c 74 esA RegQueryMult
2010: 69 70 6c 65 56 61 6c 75 65 73 3b 0a 09 61 6c 69 ipleValues;..ali
2020: 61 73 20 52 65 67 51 75 65 72 79 56 61 6c 75 65 as RegQueryValue
2030: 45 78 41 20 52 65 67 51 75 65 72 79 56 61 6c 75 ExA RegQueryValu
2040: 65 45 78 3b 0a 09 61 6c 69 61 73 20 52 65 67 52 eEx;..alias RegR
2050: 65 70 6c 61 63 65 4b 65 79 41 20 52 65 67 52 65 eplaceKeyA RegRe
2060: 70 6c 61 63 65 4b 65 79 3b 0a 09 61 6c 69 61 73 placeKey;..alias
2070: 20 52 65 67 53 61 76 65 4b 65 79 41 20 52 65 67 RegSaveKeyA Reg
2080: 53 61 76 65 4b 65 79 3b 0a 09 61 6c 69 61 73 20 SaveKey;..alias
2090: 52 65 67 53 65 74 56 61 6c 75 65 45 78 41 20 52 RegSetValueExA R
20a0: 65 67 53 65 74 56 61 6c 75 65 45 78 3b 0a 09 61 egSetValueEx;..a
20b0: 6c 69 61 73 20 52 65 67 55 6e 4c 6f 61 64 4b 65 lias RegUnLoadKe
20c0: 79 41 20 52 65 67 55 6e 4c 6f 61 64 4b 65 79 3b yA RegUnLoadKey;
20d0: 0a 09 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 ..static if (_WI
20e0: 4e 33 32 5f 57 49 4e 4e 54 5f 4f 4e 4c 59 29 20 N32_WINNT_ONLY)
20f0: 7b 0a 09 09 61 6c 69 61 73 20 41 62 6f 72 74 53 {...alias AbortS
2100: 79 73 74 65 6d 53 68 75 74 64 6f 77 6e 41 20 41 ystemShutdownA A
2110: 62 6f 72 74 53 79 73 74 65 6d 53 68 75 74 64 6f bortSystemShutdo
2120: 77 6e 3b 0a 09 09 61 6c 69 61 73 20 49 6e 69 74 wn;...alias Init
2130: 69 61 74 65 53 79 73 74 65 6d 53 68 75 74 64 6f iateSystemShutdo
2140: 77 6e 41 20 49 6e 69 74 69 61 74 65 53 79 73 74 wnA InitiateSyst
2150: 65 6d 53 68 75 74 64 6f 77 6e 3b 0a 09 09 61 6c emShutdown;...al
2160: 69 61 73 20 52 65 67 52 65 73 74 6f 72 65 4b 65 ias RegRestoreKe
2170: 79 57 20 52 65 67 52 65 73 74 6f 72 65 4b 65 79 yW RegRestoreKey
2180: 3b 0a 09 09 73 74 61 74 69 63 20 69 66 20 28 5f ;...static if (_
2190: 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 WIN32_WINNT >= 0
21a0: 78 35 30 31 29 20 7b 0a 09 09 09 61 6c 69 61 73 x501) {....alias
21b0: 20 52 65 67 53 61 76 65 4b 65 79 45 78 41 20 52 RegSaveKeyExA R
21c0: 65 67 53 61 76 65 4b 65 79 45 78 3b 0a 09 09 7d egSaveKeyEx;...}
21d0: 0a 09 09 73 74 61 74 69 63 20 69 66 20 28 5f 57 ...static if (_W
21e0: 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 IN32_WINNT >= 0x
21f0: 36 30 30 29 20 7b 0a 09 09 09 61 6c 69 61 73 20 600) {....alias
2200: 52 65 67 47 65 74 56 61 6c 75 65 41 20 52 65 67 RegGetValueA Reg
2210: 47 65 74 56 61 6c 75 65 3b 0a 09 09 7d 0a 09 7d GetValue;...}..}
2220: 0a 09 64 65 70 72 65 63 61 74 65 64 20 7b 0a 09 ..deprecated {..
2230: 09 61 6c 69 61 73 20 52 65 67 43 72 65 61 74 65 .alias RegCreate
2240: 4b 65 79 41 20 52 65 67 43 72 65 61 74 65 4b 65 KeyA RegCreateKe
2250: 79 3b 0a 09 09 61 6c 69 61 73 20 52 65 67 45 6e y;...alias RegEn
2260: 75 6d 4b 65 79 41 20 52 65 67 45 6e 75 6d 4b 65 umKeyA RegEnumKe
2270: 79 3b 0a 09 09 61 6c 69 61 73 20 52 65 67 4f 70 y;...alias RegOp
2280: 65 6e 4b 65 79 41 20 52 65 67 4f 70 65 6e 4b 65 enKeyA RegOpenKe
2290: 79 3b 0a 09 09 61 6c 69 61 73 20 52 65 67 51 75 y;...alias RegQu
22a0: 65 72 79 56 61 6c 75 65 41 20 52 65 67 51 75 65 eryValueA RegQue
22b0: 72 79 56 61 6c 75 65 3b 0a 09 09 61 6c 69 61 73 ryValue;...alias
22c0: 20 52 65 67 53 65 74 56 61 6c 75 65 41 20 52 65 RegSetValueA Re
22d0: 67 53 65 74 56 61 6c 75 65 3b 0a 09 7d 0a 7d 0a gSetValue;..}.}.
22e0: 0a 61 6c 69 61 73 20 56 41 4c 45 4e 54 2a 20 50 .alias VALENT* P
22f0: 56 41 4c 45 4e 54 3b 0a VALENT;.