
     [1f                        d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d Z	ej                  dk(  rd Zd dlmZmZmZmZmZmZmZmZmZmZ d d	lmZmZmZmZmZmZ  ee      Z ee      Zd
Z dZ!ejD                  jF                  Z#eefe#_$        ee#_%        ejD                  jL                  Z&eefe&_$        ee&_%         G d de      Z' ee'      Z(ejR                  jT                  Z+e(fe+_$        ee+_%         G d de      Z,ddZ-e.dk(  rL e	       Z/ e0dd      5 Z1 e2de/z  e1       ddd       e/s# e-ejf                  gejh                  z   d       yyy# 1 sw Y   0xY w)    )print_functionN)IntEnum)list2cmdlinec                      t         j                  dk7  rt        d      dd l} 	 | j                  j
                  j                         S #  t        j                          t        d       Y yxY w)Nnt-This function is only implemented on Windows.r   z*Admin check failed, assuming not an admin.F)
osnameRuntimeErrorctypeswindllshell32IsUserAnAdmin	traceback	print_excprint)r   s    Hlib/python3.12/site-packages/menuinst/platforms/win_utils/win_elevate.pyisUserAdminr      sY    	ww$JKK}}$$2244:;s   #A !A+r   c                 H    	 | j                  d      S # t        $ r | cY S w xY w)Nzutf-8)encodeAttributeError)values    r   ensure_binaryr   %   s,    	<<(( 	 L	s    !!)
POINTER	StructureWinErrorbyrefc_char_pc_intc_ulongc_void_psizeofr   )BOOLDWORDHANDLE	HINSTANCEHKEYHWND@   c                   t    e Zd ZdZdefdefdefdefdefdefdefd	efd
e	fde
fdefdefdefdefdefgZd Zy)ShellExecuteInfoz
        https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-shellexecuteexa
        https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/ns-shellapi-_shellexecuteinfoa
        cbSizefMaskhwndlpVerblpFilelpParameterslpDirectorynShowhInstApplpIDListlpClass	hKeyClassdwHotKeyhIconhProcessc                     t        j                  |        t        |       | _        |j	                         D ]-  \  }}t        |t              rt        |      }t        | ||       / y )N)	r   __init__r"   r-   items
isinstancestrr   setattr)selfkwargs
field_namefield_values       r   r=   zShellExecuteInfo.__init__`   sU    t$ ,DK+1<<> 7'
Kk3/"/"<Kj+67    N)__name__
__module____qualname____doc__r$   r    r(   r   r   r&   r!   r'   r%   _fields_r=    rF   r   r,   r,   H   s    	 ugTNx x X&H%e#"!$f 
$	7rF   r,   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d
ZdZy)SWr         	      
                  N)rG   rH   rI   HIDEMAXIMIZEMINIMIZERESTORESHOWSHOWDEFAULTSHOWMAXIMIZEDSHOWMINIMIZEDSHOWMINNOACTIVESHOWNASHOWNOACTIVATE
SHOWNORMALrL   rF   r   rN   rN   n   s>    DHHGDKMMOFNJrF   rN   Tc           	      6   t         j                  dk7  rt        d      t        j                  }| |gt        j
                  z   } n't        | d      rt        | t              rt        d      d| d   d}t        | dd        }t        j                  }d}t        |t        |||d d 	      }t        t!        |            }|s
t#               |rI|j$                  }	t'        |	t(               t+               }
t-        |	t!        |
             |
j.                  }|S d }|S )
Nr   r   __iter__zcmdLine is not a sequence."r   rX   runas)r4   r.   r0   r1   r2   r/   r3   )r	   r
   r   sys
executableargvhasattrr?   r@   
ValueErrorr   rN   rY   r,   SEE_MASK_NOCLOSEPROCESSShellExecuteExr   r   r;   WaitForSingleObjectINFINITEr$   GetExitCodeProcessr   )cmdLinewait
python_execmdparamsshowCmdr0   execute_info
successful
procHandleerrrcs               r   
runAsAdminr~   }   s   	ww$JKKJ,)Wj)Z-E566AJ
 C'!"+&FggGF $%L  l 34Jj!**
J1g:uSz2YY I IrF   __main__z
output.txtazuserIsAdmin = %d)file)rt   )NT)5
__future__r   r	   ri   r   enumr   
subprocessr   r   r
   r   r   r   r   r   r   r   r   r    r!   r"   r   ctypes.wintypesr#   r$   r%   r&   r'   r(   PHANDLEPDWORDrn   rq   kernel32rp   argtypesrestyperr   r,   PShellExecuteInfoShell32ShellExecuteExAro   rN   r~   rG   userIsAdminopenfr   rj   rk   rL   rF   r   <module>r      sj   & 	 
   #  77d?   KJfoGU^F(H //==$*E? "';;#)6"2!%79 7@   01^^33N02N!N -` z-K	lC	  :A K0q9:CNN#chh.T: 	 : :s   EE