
    six                        S SK Jr  S SKJr  SSKJrJr  \" \5      r\(       a  S SK	J
r
JrJrJrJrJrJrJrJrJrJrJrJr  S SKJrJrJrJrJrJr  \
" \5      r\
" \5      rSr Sr!\RD                  RF                  r#\\4\#l$        \\#l%        \RD                  RL                  r&\4\&l$        \\&l%         " S	 S
\5      r'\
" \'5      r(\RR                  RT                  r+\(4\+l$        \\+l%         " S S\5      r, " S S\5      r-S r.S r/S r0SS jr1g)    )IntEnum)	getLogger   )ensure_binaryon_win)POINTER	StructureWinErrorbyrefc_char_pc_intc_ulongc_ulonglongc_void_p	c_wchar_ppointersizeofwindll)BOOLDWORDHANDLE	HINSTANCEHKEYHWND@   c                   |    \ rS rSrSrS\4S\4S\4S\4S\4S\4S	\4S
\	4S\
4S\4S\4S\4S\4S\4S\4/rS rSrg)ShellExecuteInfo)   z
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                     [         R                  " U 5        [        U 5      U l        UR	                  5        H1  u  p#[        U[        5      (       a  [        U5      n[        XU5        M3     g )N)	r	   __init__r   r    items
isinstancestrr   setattr)selfkwargs
field_namefield_values       8lib/python3.13/site-packages/conda/common/_os/windows.pyr0   ShellExecuteInfo.__init__A   sO    t$ ,DK+1<<>'
k3//"/"<K+6 ,:    )r    N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   r   r   r   r   r   _fields_r0   __static_attributes__ r;   r9   r   r   )   s    	 ugTNx x X&H%e#"!$f 
$	7r;   r   c                   D    \ 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SrSrSrg)SWO   r         	      
   r               rC   N)r<   r=   r>   r?   HIDEMAXIMIZEMINIMIZERESTORESHOWSHOWDEFAULTSHOWMAXIMIZEDSHOWMINIMIZEDSHOWMINNOACTIVESHOWNASHOWNOACTIVATE
SHOWNORMALrB   rC   r;   r9   rE   rE   O   s>    DHHGDKMMOFNJr;   rE   c                   H    \ 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SrSrSrSrg)ERROR^   r   r   rG      rJ                      rM      rC   N)r<   r=   r>   r?   ZEROFILE_NOT_FOUNDPATH_NOT_FOUND
BAD_FORMATACCESS_DENIEDASSOC_INCOMPLETEDDE_BUSYDDE_FAILDDE_TIMEOUTDLL_NOT_FOUNDNO_ASSOCOOMSHARErB   rC   r;   r9   r]   r]   ^   sD    DNNJMHHKMH
CEr;   r]   c                     S n[        S5      n [        R                  R                  [	        U 5      S S [        U5      5        UR                  nU$ ! [         a!  n[        R                  SU5         S nAU$ S nAff = f)Nr   %r)
r   r   kernel32GetDiskFreeSpaceExWr   r   value	Exceptionloginfo)dir_nameresult
free_byteses       r9   get_free_space_on_windowsr   n   sy    FQJ	++hJ		
 !! M  qMs   A A 
A<A77A<c                      Sn  [         R                  R                  5       S:g  n U $ ! [         a!  n[        R                  SU5         S nAU $ S nAff = f)NFr   ru   )r   shell32IsUserAnAdminry   rz   r{   )r}   r   s     r9   is_admin_on_windowsr   ~   sR    F--/14 M  qMs   !' 
AAAc                      [        U [        5        [        U 5        g! [         a   n[        R                  SU5         SnAgSnAff = f)zBWaits until spawned process finishes and closes the handle for it.ru   N)WaitForSingleObjectINFINITECloseHandlery   rz   r{   )process_handler   s     r9   _wait_and_close_handler      s:    NH5N# qs    
AAAc           
         U S   nSR                  [        U 5      S:  a  U SS OS5      nSnSn [        [        SSUUS[        R
                  S9n[        [        U5      5      nUR                  nU(       d  [        5       nXE4$ U(       a  [        WR                  5        XE4$ ! [         a$  nSnUn[        R                  S	U5         SnAN\SnAff = f)
a  
Run command line argument list (`args`) with elevated privileges.

If `wait` is True, the process will block until completion.

NOTES:
    - no stdin / stdout / stderr pipe support
    - does not automatically quote arguments (i.e. for paths that may contain spaces)
See:
- http://stackoverflow.com/a/19719292/1170370 on 20160407 MCS.
- msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx
- https://github.com/ContinuumIO/menuinst/blob/master/menuinst/windows/win_elevate.py
- https://github.com/saltstack/salt-windows-install/blob/master/deps/salt/python/App/Lib/site-packages/win32/Demos/pipes/runproc.py  # NOQA
- https://github.com/twonds/twisted/blob/master/twisted/internet/_dumbwin32proc.py
- https://stackoverflow.com/a/19982092/2127762
- https://www.codeproject.com/Articles/19165/Vista-UAC-The-Definitive-Guide
- https://github.com/JustAMan/pyWinClobber/blob/master/win32elevate.py
r    rO   NrC   runas)r!   r"   r#   r$   r%   r&   r'   Fru   )joinlenr   SEE_MASK_NOCLOSEPROCESSrE   rP   ShellExecuteExr   r.   ry   rz   r{   r
   r   )	argswaitarg0	param_strhprocess
error_codeexecute_info
successfulr   s	            r9   run_as_adminr      s    & 7DSY]ab;IHJ')"''
 $E,$78
(( Z
  
|445  

qs   AB$ $
C.CCN)T)2enumr   loggingr   compatr   r   r<   rz   ctypesr   r	   r
   r   r   r   r   r   r   r   r   r   r   ctypes.wintypesr   r   r   r   r   r   PHANDLEPDWORDr   r   rv   r   argtypesrestyper   r   PShellExecuteInfoShell32ShellExecuteExAr   rE   r]   r   r   r   r   rC   r;   r9   <module>r      s     *	    KJfoGU^F(H //==$*E? "'//--K"9KK79 7@   01^^33N02N!N G   - r;   