
    dafY                     8   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZ  ej                  ddg       d dl 	 ej                  ej                  j                  d      d	z      Z ej&                         dd
 Z e       dk(  rdndZedk  rdndZd ej.                         fz  Zdez   Zdez   Zddefddefddefddefdg defdg defdde fd d!d"z  efd#d$d%z  e fd&d'efg
Z!e
 G d( d)ejD                               Z# G d* d+ejD                        Z$ G d, d-e$      Z% ejL                  ed.       G d/ d0e$             Z' ejL                  ed1       G d2 d3e$             Z(e)d4k(  res	 e*d5d6        ejV                          yy# eef$ r dZY )w xY w)7    N)machinewin32_edition)cpython_onlyimport_helperwinregwin)required_on)*z--remote      AMD64TF)   r   z Python Test Key [%d] - Delete Mez	SOFTWARE\zSOFTWARE\Classes\z	Int Value-   zQword Valuel   w*M	 z
String ValzA string valueStringExpandzThe path is %path%zMulti-string)Lotsofstringvaluesz	Multi-nul) r   r   r   zRaw Datas   binary dataz
Big Stringxi?  z
Big Binary   xi @  u   Japanese 日本u	   日本語c                       e Zd Zd Zd Zy)HeapTypeTestsc                 T    | j                  t        j                  t                     y N)
assertTruegc
is_trackedHKEYTypeselfs    +/root/Python-3.12.4/Lib/test/test_winreg.pytest_have_gczHeapTypeTests.test_have_gc8   s    h/0    c                 p    | j                  t        d      5  dt        _        d d d        y # 1 sw Y   y xY w)N	immutablebar)assertRaisesRegex	TypeErrorr   foor    s    r"   test_immutablezHeapTypeTests.test_immutable;   s.    ##I{; 	! HL	! 	! 	!s   ,5N)__name__
__module____qualname__r#   r+    r$   r"   r   r   6   s    1!r$   r   c                   F    e Zd Zd Zd ZdefdZdefdZd
dZ	d
dZ
d Zy	)BaseWinregTestsc                 8    | j                  t        t               y r   )delete_treeHKEY_CURRENT_USERtest_key_namer    s    r"   setUpzBaseWinregTests.setUpB   s     	*M:r$   c                     	 t        ||dt              }	 	 t        |d      }| j	                  ||        # t        $ r Y y w xY w# t        $ r Y nw xY wt        |       t        ||       y Nr   )OpenKeyKEY_ALL_ACCESSOSErrorEnumKeyr3   CloseKey	DeleteKey)r!   rootsubkeyhkey	subsubkeys        r"   r3   zBaseWinregTests.delete_treeG   s~    	4N;D #D!,	 T9-   		   	$s    5 A 	A A	AAsub_keyc                    t        |t        t        d        ||t              }| j                  |j                  dk7          |||      }t
        D ]  \  }}}t        ||d||        t        |      \  }	}
}| j                  |	dd       | j                  |
dd       t        |      \  }	}
}| j                  |	dd       | j                  |
t        t
              d       t        |      }t        |       	 t        |       | j                  d       t        |      }|j                          	 t        |       | j                  d       y # t        $ r Y Dw xY w# t        $ r Y y w xY w)NDefault valuer   r   z"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)SetValuer5   REG_SZr   handle	test_data
SetValueExQueryInfoKeyassertEquallenintr=   failr;   Close)r!   root_key	subkeystr	CreateKeykeyrC   
value_name
value_data
value_typenkeysnvalues	since_modint_sub_keyint_keys                 r"   _write_test_dataz BaseWinregTests._write_test_dataW   sh    	=&/B-0

a(C+ 3< 	G.J
Jw
Az:F	G %1$5!w	#GH!%GH$0$9!w	#GH#i.;	=
 'l	%II 2 3
 c(			!II 7 8  		  		s$   7E /E 	EE	E'&E'c                    t        |t              }| j                  |dd        ||t              } |||      5 }d}	 	 t        ||      }| j                  |t
        v dd       |dz   },# t        $ r Y nw xY w| j                  |t        t
              d       t
        D ];  \  }	}
}t        ||	      \  }}| j                  ||
d       | j                  ||d       = 	 d d d        n# 1 sw Y   nxY wj                          t        |d      }| j                  ||d	       	 t        |d       | j                  d
       n# t        $ r Y nw xY w|j                          y )NrE   z+Registry didn't give back the correct valuer   r   Tz&Didn't read back the correct test dataz'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!)
QueryValuer5   rL   	EnumValuer;   rI   rM   QueryValueExrP   r<   rO   )r!   rQ   rR   r9   valrT   rC   indexdatarU   rV   rW   read_valread_typs                 r"   _read_test_datazBaseWinregTests._read_test_data   s   =1oF	H h.S)$ 	FE$We4D   !2D!IK	   
 UC	NFH 7@ F2
J
%1':%F"(  :!DF  :!DF	F	F 	F 	F( 	3?9.GH	COIIJK 		 			sA   C'A*C'*	A63C'5A66A'C''C0#E 	EEc                 (   t        |t        dt              }t        ||dt              }t        D ]  \  }}}t	        ||        t        |      \  }}	}
| j                  |dd       | j                  |	dd       |j                          t        ||       	 t        ||       | j                  d       |j                          t        |t               	 t        |t              }| j                  d       y # t        $ r Y Nw xY w# t        $ r Y y w xY w)Nr   zsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)r9   r5   r:   rI   DeleteValuerK   rL   rP   r>   rO   r;   )r!   rQ   rR   rT   rC   rU   rV   rW   rX   rY   rZ   s              r"   _delete_test_dataz!BaseWinregTests._delete_test_data   s   hq.A#y!^< 3< 	-.J
J,	- %1$9!w	#CD!%EF#y!	c9%II89 			(M*	(M2CII78  		  		s$   C6 !D 6	DD	DDc                 p    | j                  ||       | j                  ||       | j                  ||       y r   )r]   rg   rj   )r!   rQ   rR   s      r"   	_test_allzBaseWinregTests._test_all   s2    h	2Xy1x3r$   c                    t        ||dt              5 }| j                  |j                  dk7         d d d        t	        ||dt              5 }| j                  |j                  dk7         d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   )rT   rC   reservedaccess)CreateKeyExr:   r   rH   	OpenKeyEx)r!   rT   rC   ckeyokeys        r"   _test_named_argsz BaseWinregTests._test_named_args   s    S'A .0 	.37OODKK1,-	. 3!,. 	.15OODKK1,-	. 	.		. 	.	. 	.s   A6B6A?BN)rC   )r,   r-   r.   r6   r3   rS   r]   r9   rg   rj   rl   rt   r/   r$   r"   r1   r1   @   s6    ;
   4=#,(R 3<W &P<4
.r$   r1   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z ej                  edk  d      d        Zd Zd Zd Zd Zd Zy)LocalWinregTestsc                 Z    | j                  t               | j                  t        d       y )Nu   日本-subkey)rl   r4   r    s    r"   test_registry_worksz$LocalWinregTests.test_registry_works   s    ()(/:r$   c                     d }| j                  t        |       d }| j                  t        |       | j                  t               y )Nc                 &    t        | |dt              S r8   )rp   r:   rT   rC   s     r"   <lambda>zILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>   s    ;sGQ#O r$   )rS   c                 &    t        | |dt              S r8   )rq   KEY_READr{   s     r"   r|   zILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>   s    9S'1h#G r$   )r9   )r]   r4   rg   rj   )r!   ckeokes      r"   &test_registry_works_extended_functionsz7LocalWinregTests.test_registry_works_extended_functions   sF     P/3?G.<01r$   c                 `    | j                  t        t               t        t        t               y r   )rt   r4   r5   r>   r    s    r"   test_named_argumentsz%LocalWinregTests.test_named_arguments   s     /? 	#]3r$   c                     t        d t              }| j                  |j                  d       |j	                          | j                  |j                  d       y r8   )ConnectRegistryHKEY_LOCAL_MACHINEassertNotEqualrH   rP   rL   r!   hs     r"   ,test_connect_registry_to_local_machine_worksz=LocalWinregTests.test_connect_registry_to_local_machine_works   s@    D"45AHHa(		1%r$   c                 6    d }| j                  t        |       y )Nc                  "    t        dt              S )Nabcdefghijkl)r   r4   r/   r$   r"   r|   zCLocalWinregTests.test_nonexistent_remote_registry.<locals>.<lambda>   s    /.:KL r$   )assertRaisesr;   )r!   connects     r"    test_nonexistent_remote_registryz1LocalWinregTests.test_nonexistent_remote_registry   s    L'7+r$   c                     t        d      }| j                  t        |      t               | j                  |t        j
                  d   dz          y )Nz%windir%\testwindirz\test)ExpandEnvironmentStringsrL   typestrosenviron)r!   rs     r"   testExpandEnvironmentStringsz-LocalWinregTests.testExpandEnvironmentStrings   s?    $%56a#&BJJx08;<r$   c                     	 t        d t              5 }| j                  |j                  d       t        # 1 sw Y   y xY w# t        $ r | j                  j                  d       Y y w xY wr8   )r   r   r   rH   r;   rL   r   s     r"   test_context_managerz%LocalWinregTests.test_context_manager   sa    	* '9: a##AHHa0   	*QXXq)	*s#   A #5>A A %A)(A)c                 \  
 d
 G 
fddt         j                        } |       }|j                          	 t        t        t
        dz         5 }t        d      D ]<  }t        |      \  }}}t        |      D ]  }t        ||      }	t        ||	d           > 	 d d d        d
|j                          t        t        t
        dz          t        t        t
               y # 1 sw Y   GxY w# d
|j                          t        t        t
        dz          t        t        t
               w xY w)NFc                       e Zd Z fdZy)>LocalWinregTests.test_changing_value.<locals>.VeryActiveThreadc                     t        t        t              5 }d}d}s|rdn|}| }t        |dt        |       sd d d        y # 1 sw Y   y xY w)NT  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   changing_value)rS   r4   r5   rF   rG   )r!   rT   	use_shortlong_stringsdones        r"   runzBLocalWinregTests.test_changing_value.<locals>.VeryActiveThread.run  sZ    0-@ CC $I"*K"#,C+(1M	 &6B #C C Cs   $AAN)r,   r-   r.   r   )r   s   r"   VeryActiveThreadr     s	    Cr$   r   z\changing_valuei  r   T)	threadingThreadstartrS   r4   r5   rangerK   r`   r_   joinr>   )r!   r   threadrT   _num_subkeys
num_valuestinamer   s             @r"   test_changing_valuez$LocalWinregTests.test_changing_value  s    	Cy// 	C "#	8,();;= 1@Ct 1A1=c1B.KQ":. 1(a0"3Q0111 DKKM'7I)IJ'71 1 DKKM'7I)IJ'7s$   C, AC C,  C)%C, ,?D+c           	         d}	 t        t        t              5 }t        ||t        d       t        |      \  }}}t        |d       d d d        t        t        dj                  t        |f             t        t        t               y # 1 sw Y   CxY w# t        t        dj                  t        |f             t        t        t               w xY w)N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r   \)	rS   r4   r5   rF   rG   rK   r<   r>   r   )r!   r   rT   r   r   r   s         r"   test_long_keyzLocalWinregTests.test_long_key&  s     	8,m<  dFC0-9#->*ZQ 
 'M43H)IJ'7   
 'M43H)IJ'7s"   B .BB BB ;Cc                     	 t        t        d       t        t        d       y # t        $ rC}|j                  t        j                  t        j
                  fv r| j                  d        d }~ww xY w)Nr   zMaccess denied to registry key (are you running in a non-interactive session?)r   )r`   HKEY_PERFORMANCE_DATAr;   errnoEPERMEACCESskipTestra   )r!   es     r"   test_dynamic_keyz!LocalWinregTests.test_dynamic_key4  s`    	+Q/ 	*B/  	ww5;;55 P Q		s   # 	A/>A**A/)   r   zRequires Windows XPc                    	 t        t        t              5 }| j                  |j                  d       d d d        t        t        t              }| j                  |j                  d       | j                  t              5  t        |       d d d        | j                  t              5  t        |       d d d        | j                  t              5  t        |       d d d        | j                  t              5  t        t        t               d d d        t        t        t               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   txY w# 1 sw Y   NxY w# t        t        t               w xY wr8   )rS   r4   r5   r   rH   r9   r   NotImplementedErrorDisableReflectionKeyEnableReflectionKeyQueryReflectionKeyDeleteKeyExr>   )r!   ckrT   s      r"   test_reflection_unsupportedz,LocalWinregTests.test_reflection_unsupportedB  s.   	8,m< 2##BIIq12 +];C

A.""#67 *$S)*""#67 )#C()""#67 ("3'(""#67 >-}=> '72 2* *) )( (> > '7s   E) D-AE)  D9E) )E5E) EE) ;EE) -D62E) 9E>E) E
E) EE) E&"E) )E?c                    	 t        t        t              5 }| j                  |j                  d       t        |dd t        d       d d d        t        t        t               y # 1 sw Y   xY w# t        t        t               w xY w)Nr   	test_name        )rS   r4   r5   r   rH   rJ   	REG_DWORDr>   r!   r   s     r"   test_setvalueex_value_rangez,LocalWinregTests.test_setvalueex_value_rangeV  sl    
	8,m< I##BIIq12{D)ZHI '7	I I '7s"   A/ 0A#A/ #A,(A/ /Bc           	         	 t        t        t              5 }| j                  t              5  t        |dd t        d       t        |dd t        d       d d d        | j                  t        t        |d       | j                  t        t        |d       d d d        t        t        t               y # 1 sw Y   ^xY w# 1 sw Y   *xY w# t        t        t               w xY w)Ntest_name_dwordtest_name_qword)rS   r4   r5   r   OverflowErrorrJ   r   	REG_QWORDFileNotFoundErrorra   r>   r   s     r"   "test_setvalueex_negative_one_checkz3LocalWinregTests.test_setvalueex_negative_one_checkb  s    		8,m< Z&&}5 Kr#4dIrJr#4dIrJK !!"3\2GXY!!"3\2GXYZ '7K KZ Z '7s:   C B<'B0A B<C 0B9	5B<<CC Cc                    	 t        t        t              5 }| j                  |j                  d       d}t        |dd t        |       t        |d      \  }}| j                  |t               | j                  ||       d d d        t        t        t               y # 1 sw Y   xY w# t        t        t               w xY w)Nr   r   r   )
rS   r4   r5   r   rH   rJ   r   ra   rL   r>   r!   r   test_valret_valret_types        r"   test_queryvalueex_return_valuez/LocalWinregTests.test_queryvalueex_return_values  s    
		8,m< 4##BIIq1%2{D)XF$0[$A!  95  (34 '74 4 '7#   B( A)B?B( B%!B( (B>c                    	 t        t        t              5 }| j                  |j                  d       d }t        |ddt        |       t        |d      \  }}| j                  |t               | j                  ||       d d d        t        t        t               y # 1 sw Y   xY w# t        t        t               w xY w)Nr   r   )
rS   r4   r5   r   rH   rJ   
REG_BINARYra   rL   r>   r   s        r"   #test_setvalueex_crash_with_none_argz4LocalWinregTests.test_setvalueex_crash_with_none_arg  s    		8,m< 4##BIIq12{Az8D$0[$A!  :6  (34 '74 4 '7r   c                    	 t        t        t              5 }| j                  |j                  d       d}t        |ddt        |       t        |d      \  }}| j                  |t               | j                  |d       d d d        t        t        t               y # 1 sw Y   xY w# t        t        t               w xY w)Nr   zA string  with a nullr   zA string)
rS   r4   r5   r   rH   rJ   rG   ra   rL   r>   r   s        r"    test_read_string_containing_nullz1LocalWinregTests.test_read_string_containing_null  s    		8,m< 6##BIIq152{Avx@$0[$A!  62  *56 '76 6 '7r   N)r,   r-   r.   rx   r   r   r   r   r   r   r   r   r   unittest
skipUnlessWIN_VERr   r   r   r   r   r   r/   r$   r"   rv   rv      sx    ;
24&,=
*8@8
0 X6)+@A8 B8&
88"8 88r$   rv   zSkipping remote registry testsc                       e Zd Zd Zy)RemoteWinregTestsc                 N    t        t        t              }| j                  |       y r   )r   REMOTE_NAMEr4   rl   )r!   
remote_keys     r"   test_remote_registry_worksz,RemoteWinregTests.test_remote_registry_works  s    $[2CD
z"r$   N)r,   r-   r.   r   r/   r$   r"   r   r     s    #r$   r   zx64 specific registry testsc                       e Zd Zd Z ej
                   e       dv d      d        Z ej                  e	d      d        Z
 ej                  e	d      d        Zd Zy	)
Win64WinregTestsc                 n    | j                  t        t               t        t        t        t        d       y )Nr   )rT   rC   ro   rn   )rt   r4   r5   r   r:   r    s    r"   r   z%Win64WinregTests.test_named_arguments  s%    /?)=)A	7r$   )WindowsCoreHeadless	IoTEdgeOSz)APIs not available on WindowsCoreHeadlessc                    t        t        d      5 }| j                  t        |             | j	                  t        |             | j	                  t        |             | j                  t        |             d d d        y # 1 sw Y   y xY w)NSoftware)r9   r   r   r   assertIsNoner   r   )r!   rT   s     r"   test_reflection_functionsz*Win64WinregTests.test_reflection_functions  sr     '4 	5OO.s341#672378OO.s34	5 	5 	5s   A)BBzOS doesn't support reflectionc                    	 t        t        t        dt        t        z        5 }| j                  |j                  d       t        t        t        dt        t        z        5 }| j                  |j                  d       d d d        t        |ddt        d       d }| j                  t        |       d d d        t        t        t        dt        t        z        5 }| j                  |j                  d       | j                  dt        |d             t        |ddt        d       d d d        t        t        t        dt        t        z        5 }| j                  dt        |d             d d d        t!        t        t        t        d       y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   IxY w# t!        t        t        t        d       w xY w)Nr   r   32KEYc                  D    t        t        t        dt        t        z        S r8   )r9   r4   test_reflect_key_namer~   KEY_WOW64_64KEYr/   r$   r"   r|   z2Win64WinregTests.test_reflection.<locals>.<lambda>  s    G,=,A1,4,F%H r$   64KEY)rp   r4   r   r:   KEY_WOW64_32KEYr   rH   r9   rJ   rG   r   r;   r   rL   r_   r~   r   )r!   created_keyrT   	open_fails       r"   test_reflectionz Win64WinregTests.test_reflection  s   $	,.0Eq+o=? 6BM##K$6$6: .0Eq+o=? 7BE''

A67
 ;Avw?H	 !!'95#6( *,A1'/9; 8>A##CJJ2  *S"*=>3Avw78 *,A1!O35 ?8;  *S"*=>? )+@',;7 76 6(8 8? ? )+@',sk   !G >F!F>4F2)G AF)')G F5-G F	FF&"G )F2.G 5F>:G Gc                 z   	 t        t        t        dt        t        z        5 }t        |      }| j                  t        |      t               | j                  |       t        |       | j                  t        |             d d d        d }| j                  t        |       t        t        t        dt        t        z        5 }| j!                  |j"                  d       d d d        t%        t        t        t        d       y # 1 sw Y   xY w# 1 sw Y   0xY w# t%        t        t        t        d       w xY w)Nr   c                  D    t        t        t        dt        t        z        S r8   )rq   r4   r   r~   r   r/   r$   r"   r|   z:Win64WinregTests.test_disable_reflection.<locals>.<lambda>  s    	*;*?*2_*D!F r$   )rp   r4   r   r:   r   r   rL   r   boolassertFalser   r   r   r;   rq   r~   r   rH   r   )r!   r   disabledr   rT   s        r"   test_disable_reflectionz(Win64WinregTests.test_disable_reflection  s   	,.0Eq+o=? 	ABM-k:  h6  *$[1 2; ?@	AFI gy1 ,.CQ#o57 3:=##CJJ23 )+@',/	A 	A&3 3 )+@',s<   !D A!DAD D#D DD DD D:c                 x    | j                  t              5 }t        t        d       d d d        y # 1 sw Y   y xY w)Nsome_value_that_does_not_exist)r   r   r_   HKEY_CLASSES_ROOT)r!   ctxs     r"   test_exception_numbersz'Win64WinregTests.test_exception_numbers  s8    01 	LS(*JK	L 	L 	Ls   09N)r,   r-   r.   r   r   skipIfr   r   r   HAS_REFLECTIONr   r  r
  r/   r$   r"   r   r     s    7 X__]_(LLNyz5 {5 X)HI), J),V X)HI, J,:Lr$   r   __main__z)Remote registry calls can be tested usingz('test_winreg.py --remote \\machine_name'),r   r   sysr   r   r   platformr   r   test.supportr   r   import_moduler   argvrc   r   
IndexError
ValueErrorgetwindowsversionr   WIN64_MACHINEr  getpidtest_key_baser5   r   r   r   rG   REG_EXPAND_SZREG_MULTI_SZr   rI   TestCaser   r1   rv   r   r   r   r,   printmainr/   r$   r"   <module>r     s$   
     + 4   H5' : ((388>>*5a78K
  #


!"1
%	W,% !6)u 3ibiik^C},-=  byI(yI&vF*}M8|L&|L'zJc7mvFdElzJV,	 !H%% ! !R.h'' R.jF8 F8R ["BC# # D# ]$AB_L _L C_LD z9:	<HMMO	 o 	J Ks   +F 	FF