Hex Artifact Content

Not logged in

Artifact e5d43e62c628c0b01d689811a9b423d44d2397fa:


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;.