
    0hhY                     D   S SK r S SKrS SKrS SKrS SKrS SKrS SKJrJr  S SK	J
r
Jr  \R                  " SS/S9  S SK7   \R                  \R                  R                  S5      S	-      r\R&                  " 5       SS
 r\" 5       S:X  a  SOSr\S:  a  SOSrS\R.                  " 5       4-  rS\-   rS\-   rSS\4SS\4SS\4SS\4S/ SQ\4S/ SQ\4SS\ 4S S!S"-  \4S#S$S%-  \ 4S&S'\4/
r!\
 " S( S)\RD                  5      5       r# " S* S+\RD                  5      r$ " S, S-\$5      r%\RL                  " \S.5       " S/ S0\$5      5       r'\RL                  " \S15       " S2 S3\$5      5       r(\)S4:X  a"  \(       d	  \*" S5S65        \RV                  " 5         gg! \\4 a    Sr GN2f = f)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                        \ rS rSrS rS rSrg)HeapTypeTests6   c                 V    U R                  [        R                  " [        5      5        g N)
assertTruegc
is_trackedHKEYTypeselfs    9/opt/python-3.13.8/usr/lib/python3.13/test/test_winreg.pytest_have_gcHeapTypeTests.test_have_gc8   s    h/0    c                 z    U R                  [        S5         S[        l        S S S 5        g ! , (       d  f       g = f)N	immutablebar)assertRaisesRegex	TypeErrorr    foor!   s    r#   test_immutableHeapTypeTests.test_immutable;   s%    ##I{; HL <;;s   ,
: N)__name__
__module____qualname____firstlineno__r$   r-   __static_attributes__r/   r&   r#   r   r   6   s    1!r&   r   c                   V    \ rS rSrS rS rS\4S jrS\4S jr	SS jr
SS jrS	 rS
rg)BaseWinregTests@   c                 8    U R                  [        [        5        g r   )delete_treeHKEY_CURRENT_USERtest_key_namer!   s    r#   setUpBaseWinregTests.setUpB   s     	*M:r&   c                      [        XS[        5      n  [        US5      nU R	                  X45        M   ! [         a     g f = f! [         a     Of = f[        U5        [        X5        g Nr   )OpenKeyKEY_ALL_ACCESSOSErrorEnumKeyr9   CloseKey	DeleteKey)r"   rootsubkeyhkey	subsubkeys        r#   r9   BaseWinregTests.delete_treeG   sx    	4N;D #D!,	 T-   		   	$s    4 A 
A A
AAsub_keyc                    [        U[        [        S5        U" U[        5      nU R                  UR                  S:g  5        U" XB5      n[
         H  u  pgn[        XVSX5        M     [        U5      u  pnU R                  U	SS5        U R                  U
SS5        [        U5      u  pnU R                  U	SS5        U R                  U
[        [
        5      S5        [        U5      n[        U5         [        U5        U R                  S5        [        U5      nUR                  5          [        U5        U R                  S5        g ! [         a     NEf = f! [         a     g f = f)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!)SetValuer;   REG_SZr   handle	test_data
SetValueExQueryInfoKeyassertEquallenintrD   failrB   Close)r"   root_key	subkeystr	CreateKeykeyrK   
value_name
value_data
value_typenkeysnvalues	since_modint_sub_keyint_keys                 r#   _write_test_data BaseWinregTests._write_test_dataW   sU    	=&/B-0

a(C+ 3<.JJwAzF 3< %1$5!	#GH!%GH$0$9!	#GH#i.;	=
 'l	%II 2 3
 c(			!II 7 8  		  		s$   3E +E 
EE
E%$E%c                    [        U[        5      nU R                  USS5        U" U[        5      nU" XR5       nSn  [        Xg5      nU R                  U[
        ;   SS5        US-   nM-  ! [         a     Of = fU R                  U[        [
        5      S5        [
         H7  u  pn[        Xi5      u  pU R                  XS5        U R                  XS5        M9     S S S 5        O! , (       d  f       O= fWR                  5         [        US5      nU R                  XS	5         [        US5        U R                  S
5        O! [         a     Of = fUR                  5         g )NrM   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!)
QueryValuer;   rT   	EnumValuerB   rQ   rU   QueryValueExrX   rC   rW   )r"   rY   rZ   r@   valr\   rK   indexdatar]   r^   r_   read_valread_typs                 r#   _read_test_dataBaseWinregTests._read_test_data   sa   =1oF	H h.S$E$W4D   !2D!IK	   
 UC	NFH 7@2

%1'%F"  !DF  !DF	 7@ %$$( 	3?.GH	COIIJK 		 			sA   C$A*	!C$*
A74C$6A77A$C$$
C2$E 
EEc                 $   [        U[        S[        5      n[        X2S[        5      n[         H  u  pVn[	        XE5        M     [        U5      u  pn
U R                  USS5        U R                  U	SS5        UR                  5         [        X25         [        X25        U R                  S5        UR                  5         [        U[        5         [        U[        5      nU R                  S5        g ! [         a     NOf = f! [         a     g f = f)Nr   zsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)r@   r;   rA   rQ   DeleteValuerS   rT   rX   rE   rW   rB   )r"   rY   rZ   r\   rK   r]   r^   r_   r`   ra   rb   s              r#   _delete_test_data!BaseWinregTests._delete_test_data   s    hq.A#!^< 3<.JJ, 3< %1$9!	#CD!%EF#!	c%II89 			(M*	(M2CII78  		  		s$   C2 !D 2
C?>C?
DDc                 j    U R                  X5        U R                  X5        U R                  X5        g r   )re   rp   rt   )r"   rY   rZ   s      r#   	_test_allBaseWinregTests._test_all   s,    h2X1x3r&   c                     [        XS[        S9 nU R                  UR                  S:g  5        S S S 5        [	        XS[        S9 nU R                  UR                  S:g  5        S S S 5        g ! , (       d  f       NE= f! , (       d  f       g = f)Nr   )r\   rK   reservedaccess)CreateKeyExrA   r   rP   	OpenKeyEx)r"   r\   rK   ckeyokeys        r#   _test_named_args BaseWinregTests._test_named_args   sw    SA .037OODKK1,-0 3!,.15OODKK1,-. .	0 0. .s   A.A?.
A<?
Br/   N)rK   )r0   r1   r2   r3   r<   r9   r[   re   r@   rp   rt   rw   r   r4   r/   r&   r#   r6   r6   @   s6    ;
   4=#,(R 3<W &P<4
.r&   r6   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS r\R                  " \S:  S5      S 5       rS rS rS rS rS rSrg)LocalWinregTests   c                 Z    U R                  [        5        U R                  [        S5        g )Nu   日本-subkey)rw   r:   r!   s    r#   test_registry_works$LocalWinregTests.test_registry_works   s    ()(/:r&   c                     S nU R                  [        US9  S nU R                  [        US9  U R                  [        5        g )Nc                 $    [        XS[        5      $ r?   )r|   rA   r\   rK   s     r#   <lambda>ILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>   s    ;sQ#Or&   )r[   c                 $    [        XS[        5      $ r?   )r}   KEY_READr   s     r#   r   r      s    9S1h#Gr&   )r@   )re   r:   rp   rt   )r"   ckeokes      r#   &test_registry_works_extended_functions7LocalWinregTests.test_registry_works_extended_functions   sF     P/3?G.<01r&   c                 `    U R                  [        [        5        [        [        [        5        g r   )r   r:   r;   rE   r!   s    r#   test_named_arguments%LocalWinregTests.test_named_arguments   s     /? 	#]3r&   c                     [        S [        5      nU R                  UR                  S5        UR	                  5         U R                  UR                  S5        g r?   )ConnectRegistryHKEY_LOCAL_MACHINEassertNotEqualrP   rX   rT   r"   hs     r#   ,test_connect_registry_to_local_machine_works=LocalWinregTests.test_connect_registry_to_local_machine_works   s@    D"45AHHa(		1%r&   c                 6    S nU R                  [        U5        g )Nc                  "    [        S[        5      $ )Nabcdefghijkl)r   r:   r/   r&   r#   r   CLocalWinregTests.test_nonexistent_remote_registry.<locals>.<lambda>   s    /.:KLr&   )assertRaisesrB   )r"   connects     r#    test_nonexistent_remote_registry1LocalWinregTests.test_nonexistent_remote_registry   s    L'7+r&   c                     [        S5      nU R                  [        U5      [        5        U R                  U[        R
                  S   S-   5        g )Nz%windir%\testwindirz\test)ExpandEnvironmentStringsrT   typestrosenviron)r"   rs     r#   testExpandEnvironmentStrings-LocalWinregTests.testExpandEnvironmentStrings   s?    $%56a#&BJJx08;<r&   c                      [        S [        5       nU R                  UR                  S5        [        e! , (       d  f       g = f! [         a    U R                  WR                  S5         g f = fr?   )r   r   r   rP   rB   rT   r   s     r#   test_context_manager%LocalWinregTests.test_context_manager   sZ    	* '9:a##AHHa0 ;:  	*QXXq)	*s%   A #5
AA A &A/.A/c                 h  ^
 Sm
 " U
4S jS[         R                  5      nU" 5       nUR                  5          [        [        [
        S-   5       n[        S5       H<  n[        U5      u  pVn[        U5       H  n[        X85      n	[        X9S   5        M     M>     S S S 5        Sm
UR                  5         [        [        [
        S-   5        [        [        [
        5        g ! , (       d  f       NL= f! Sm
UR                  5         [        [        [
        S-   5        [        [        [
        5        f = f)NFc                   "   > \ rS rSrU 4S jrSrg)>LocalWinregTests.test_changing_value.<locals>.VeryActiveThreadi  c                    > [        [        [        5       nSnSnT(       d-  U(       a  SOUnU(       + n[        US[        U5        T(       d  M-  S S S 5        g ! , (       d  f       g = f)NT  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   changing_value)r[   r:   r;   rN   rO   )r"   r\   	use_shortlong_stringsdones        r#   runBLocalWinregTests.test_changing_value.<locals>.VeryActiveThread.run  sP    0-@C $I"*K"#,C+(1M	 &6B #d A@@s   7A
A&r/   N)r0   r1   r2   r3   r   r4   )r   s   r#   VeryActiveThreadr     s    C Cr&   r   z\changing_valuei  r   T)	threadingThreadstartr[   r:   r;   rangerS   ri   rh   joinrE   )r"   r   threadr\   _num_subkeys
num_valuestinamer   s             @r#   test_changing_value$LocalWinregTests.test_changing_value  s     	Cy// 	C "#	8,();;=@CtA1=c1B.KQ":.(0"3Q0 / %= DKKM'7I)IJ'7= = DKKM'7I)IJ'7s$   C2 AC!C2 !
C/+C2 2?D1c           	         Sn [        [        [        5       n[        X![        S5        [        U5      u  p4n[        US5        S S S 5        [        [        SR                  [        U45      5        [        [        [        5        g ! , (       d  f       NH= f! [        [        SR                  [        U45      5        [        [        [        5        f = f)N   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   r   \)	r[   r:   r;   rN   rO   rS   rC   rE   r   )r"   r   r\   r   r   r   s         r#   test_long_keyLocalWinregTests.test_long_key&  s     	8,m<FC0-9#->*Q =
 'M43H)IJ'7 =<
 'M43H)IJ'7s"   B ,BB 
BB ;Cc                      [        [        S5        [        [        S5        g ! [         aE  nUR                  [        R                  [        R
                  4;   a  U R                  S5        e S nAff = f)Nr   zMaccess denied to registry key (are you running in a non-interactive session?)r   )ri   HKEY_PERFORMANCE_DATArB   errnoEPERMEACCESskipTestrj   )r"   es     r#   test_dynamic_key!LocalWinregTests.test_dynamic_key4  s`    	+Q/ 	*B/  	ww5;;55 P Q		s   # 
A2A A--A2)   r   zRequires Windows XPc                 8    [        [        [        5       nU R                  UR                  S5        S S S 5        [        [        [        5      nU R                  UR                  S5        U R                  [        5         [        U5        S S S 5        U R                  [        5         [        U5        S S S 5        U R                  [        5         [        U5        S S S 5        U R                  [        5         [        [        [        5        S S S 5        [        [        [        5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nh= f! [        [        [        5        f = fr?   )r[   r:   r;   r   rP   r@   r   NotImplementedErrorDisableReflectionKeyEnableReflectionKeyQueryReflectionKeyDeleteKeyExrE   )r"   ckr\   s      r#   test_reflection_unsupported,LocalWinregTests.test_reflection_unsupportedB  s   	8,m<##BIIq1 = +];C

A.""#67$S) 8""#67#C( 8""#67"3' 8""#67-}= 8 '7 =< 87777777 '7s   F D-AF  D?F )E5F E!F ;E2F -
D<7F ?
E	F 
EF !
E/+F 2
F <F Fc                     [        [        [        5       nU R                  UR                  S5        [        USS [        S5        S S S 5        [        [        [        5        g ! , (       d  f       N#= f! [        [        [        5        f = f)Nr   	test_name        )r[   r:   r;   r   rP   rR   	REG_DWORDrE   r"   r   s     r#   test_setvalueex_value_range,LocalWinregTests.test_setvalueex_value_rangeV  sa    
	8,m<##BIIq12{D)ZH = '7	 =< '7s"   A4 0A#A4 #
A1-A4 4B
c           	          [        [        [        5       nU R                  [        5         [        USS [        S5        [        USS [        S5        S S S 5        U R                  [        [        US5        U R                  [        [        US5        S S S 5        [        [        [        5        g ! , (       d  f       Nc= f! , (       d  f       N4= f! [        [        [        5        f = f)Ntest_name_dwordtest_name_qword)r[   r:   r;   r   OverflowErrorrR   r   	REG_QWORDFileNotFoundErrorrj   rE   r   s     r#   "test_setvalueex_negative_one_check3LocalWinregTests.test_setvalueex_negative_one_checkb  s    		8,m<&&}5r#4dIrJr#4dIrJ 6 !!"3\2GXY!!"3\2GXY = '7 65 =< '7s:   C C'B0A CC 0
B>	:C
CC C(c                     [        [        [        5       nU R                  UR                  S5        Sn[        USS [        U5        [        US5      u  p4U R                  U[        5        U R                  X25        S S S 5        [        [        [        5        g ! , (       d  f       N#= f! [        [        [        5        f = f)Nr   r   r   )
r[   r:   r;   r   rP   rR   r   rj   rT   rE   r"   r   test_valret_valret_types        r#   test_queryvalueex_return_value/LocalWinregTests.test_queryvalueex_return_values  s    
		8,m<##BIIq1%2{D)XF$0[$A!  95  3 = '7 =< '7#   B+ A'B=B+ 
B($B+ +Cc                     [        [        [        5       nU R                  UR                  S5        S n[        USS[        U5        [        US5      u  p4U R                  U[        5        U R                  X25        S S S 5        [        [        [        5        g ! , (       d  f       N#= f! [        [        [        5        f = f)Nr   r   )
r[   r:   r;   r   rP   rR   
REG_BINARYrj   rT   rE   r   s        r#   #test_setvalueex_crash_with_none_arg4LocalWinregTests.test_setvalueex_crash_with_none_arg  s    		8,m<##BIIq12{Az8D$0[$A!  :6  3 = '7 =< '7r   c                     [        [        [        5       nU R                  UR                  S5        Sn[        USS[        U5        [        US5      u  p4U R                  U[        5        U R                  US5        S S S 5        [        [        [        5        g ! , (       d  f       N#= f! [        [        [        5        f = f)Nr   zA string  with a nullr   zA string)
r[   r:   r;   r   rP   rR   rO   rj   rT   rE   r   s        r#    test_read_string_containing_null1LocalWinregTests.test_read_string_containing_null  s    		8,m<##BIIq152{Avx@$0[$A!  62  *5 = '7 =< '7s#   B, A(B>B, 
B)%B, ,Cr/   N)r0   r1   r2   r3   r   r   r   r   r   r   r   r   r   r   unittest
skipUnlessWIN_VERr   r   r   r   r   r  r4   r/   r&   r#   r   r      sv    ;
24&,=
*8@8
0 6)+@A8 B8&
88"8 88r&   r   zSkipping remote registry testsc                       \ rS rSrS rSrg)RemoteWinregTestsi  c                 N    [        [        [        5      nU R                  U5        g r   )r   REMOTE_NAMEr:   rw   )r"   
remote_keys     r#   test_remote_registry_works,RemoteWinregTests.test_remote_registry_works  s    $[2CD
z"r&   r/   N)r0   r1   r2   r3   r  r4   r/   r&   r#   r	  r	    s    #r&   r	  zx64 specific registry testsc                       \ rS rSrS r\R                  " \" 5       S;   S5      S 5       r\R                  " \
S5      S 5       r\R                  " \
S5      S 5       rS	 rS
rg)Win64WinregTestsi  c                 h    U R                  [        [        5        [        [        [        [        SS9  g )Nr   )r\   rK   r{   rz   )r   r:   r;   r   rA   r!   s    r#   r   %Win64WinregTests.test_named_arguments  s%    /?)=)A	7r&   )WindowsCoreHeadless	IoTEdgeOSz)APIs not available on WindowsCoreHeadlessc                 (   [        [        S5       nU R                  [        U5      5        U R	                  [        U5      5        U R	                  [        U5      5        U R                  [        U5      5        S S S 5        g ! , (       d  f       g = f)NSoftware)r@   r   r   r   assertIsNoner   r   )r"   r\   s     r#   test_reflection_functions*Win64WinregTests.test_reflection_functions  si     '4OO.s341#672378OO.s34 544s   A)B
BzOS doesn't support reflectionc                     [        [        [        S[        [        -  5       nU R                  UR                  S5        [        [        [        S[        [        -  5       nU R                  UR                  S5        S S S 5        [        USS[        S5        S nU R                  [        U5        S S S 5        [        [        [        S[        [        -  5       nU R                  UR                  S5        U R                  S[        US5      5        [        USS[        S5        S S S 5        [        [        [        S[        [        -  5       nU R                  S[        US5      5        S S S 5        [!        [        [        [        S5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N]= f! [!        [        [        [        S5        f = f)Nr   r   32KEYc                  D    [        [        [        S[        [        -  5      $ r?   )r@   r:   test_reflect_key_namer   KEY_WOW64_64KEYr/   r&   r#   r   2Win64WinregTests.test_reflection.<locals>.<lambda>  s    G,=,A1,4,F%Hr&   64KEY)r|   r:   r  rA   KEY_WOW64_32KEYr   rP   r@   rR   rO   r   rB   r  rT   rh   r   r   )r"   created_keyr\   	open_fails       r#   test_reflection Win64WinregTests.test_reflection  s   $	,.0Eq+o=?BM##K$6$6: .0Eq+o=?BE''

A6?
 ;Avw?H	 !!'95#?( *,A1'/9;>A##CJJ2  *S"*=>3Avw7; *,A1!O358;  *S"*=>5 )+@',;? ?? ?(; ;5 5 )+@',sk   !G >F"!F>4F"2)G AF3')G G-G 
F	F""
F0,G 3
G=G 
GG G1c                     [        [        [        S[        [        -  5       n[        U5      nU R                  [        U5      [        5        U R                  U5        [        U5        U R                  [        U5      5        S S S 5        S nU R                  [        U5        [        [        [        S[        [        -  5       nU R!                  UR"                  S5        S S S 5        [%        [        [        [        S5        g ! , (       d  f       N= f! , (       d  f       N:= f! [%        [        [        [        S5        f = f)Nr   c                  D    [        [        [        S[        [        -  5      $ r?   )r}   r:   r  r   r  r/   r&   r#   r   :Win64WinregTests.test_disable_reflection.<locals>.<lambda>  s    	*;*?*2_*D!Fr&   )r|   r:   r  rA   r!  r   rT   r   boolassertFalser   r   r   rB   r}   r   r   rP   r   )r"   r"  disabledr#  r\   s        r#   test_disable_reflection(Win64WinregTests.test_disable_reflection  s    	,.0Eq+o=?BM-k:  h6  *$[1 2; ?@?FI gy1 ,.CQ#o57:=##CJJ27 )+@',/? ?&7 7 )+@',s<   !D( A!DAD( D#D( 
DD( 
D%!D( (Ec                     U R                  [        5       n[        [        S5        S S S 5        g ! , (       d  f       g = f)Nsome_value_that_does_not_exist)r   r   rh   HKEY_CLASSES_ROOT)r"   ctxs     r#   test_exception_numbers'Win64WinregTests.test_exception_numbers  s+    01S(*JK 211s   0
>r/   N)r0   r1   r2   r3   r   r  skipIfr   r  r  HAS_REFLECTIONr$  r,  r2  r4   r/   r&   r#   r  r    s}    7 __]_(LLNyz5 {5 )HI), J),V )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   argvrl   r  
IndexError
ValueErrorgetwindowsversionr  WIN64_MACHINEr5  getpidtest_key_baser;   r  r   r   rO   REG_EXPAND_SZREG_MULTI_SZr   rQ   TestCaser   r6   r   r  r	  r  r0   printmainr/   r&   r#   <module>rG     s   
     + 4   H5' : ((388>>*5a78K
 


!"1
%	W,% !6)u 3biik^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:	<MMO	 o 	J Ks   +F 
FF