
    %
i1                         d Z 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	 ej
        ej        z  ej        z  ej        z  Zej        ej        z  ej        z  ej        z  Zej        ZddlmZmZmZmZmZmZmZmZmZ ddlm Z   G d dej!        j"        j#                  Z$e%dk    rd ej&        ddej'                  Z( ej)        e(          Z* ej+        e(            e$e*d         d                   Z,e,-                                 dS dS )	z
Implements a permissions editor for services.
Service can be specified as plain name for local machine,
or as a remote service of the form \\machinename\service
    N)authorization)	READ_CONTROLSI_ACCESS_GENERALSI_ACCESS_SPECIFICSI_ADVANCEDSI_EDIT_ALLSI_PAGE_TITLESI_RESET	WRITE_DACWRITE_OWNERIID_NULLc                   ^    e Zd Zej        gZg dZd Zd Zd Z	d Z
d Zd Zd Zd	 ZddZdS )ServiceSecurity)GetObjectInformationGetSecuritySetSecurityGetAccessRightsGetInheritTypes
MapGenericPropertySheetPageCallbackc                 >    || _         |                     |            d S )N)ServiceName_wrap_)selfr   s     C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32comext/authorization/demos/EditServiceSecurity.py__init__zServiceSecurity.__init__8   s"    &D    c                     t           t          z  t          z  t          z  }d}d}t          j                            | j                  d         }d| j        z   }t          }||||||fS )zkIdentifies object whose security will be modified, and determines options available
        to the end userr       zService Permissions for )	r   r   r	   r
   ospathsplitr   r   )r   flags	hinstance
servername
objectname	pagetitle
objecttypes          r   r   z$ServiceSecurity.GetObjectInformation<   sd     k)M9HD	
 W]]4#344Q7
.1AA	
iZJNNr   c                 v    |rt          j                    S t          j        | j        t           j        |          S )z,Requests the existing permissions for object)win32securitySECURITY_DESCRIPTORGetNamedSecurityInfor   
SE_SERVICE)r   requestedinfobdefaults      r   r   zServiceSecurity.GetSecurityI   s;     	 4666 5 -":M  r   c           	          |                                 }|                                }|                                }|                                }t	          j        | j        t          j        |||||           dS )z!Applies permissions to the objectN)GetSecurityDescriptorOwnerGetSecurityDescriptorGroupGetSecurityDescriptorDaclGetSecurityDescriptorSaclr,   SetNamedSecurityInfor   r/   )r   r0   sdownergroupdaclsacls          r   r   zServiceSecurity.SetSecurityR   s    --//--//++--++--*$	
 	
 	
 	
 	
r   c                 \   ||t           k    rt          d          t           t          j        dt          ft           t
          dt          ft           t          dt          ft           t          dt          ft           t          dt          ft           t          dt          ft           t          d	t          ft           t          j        d
t          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          ft           t          j        dt          fg}|dfS )a  Returns a tuple of (AccessRights, DefaultAccess), where AccessRights is a sequence of tuples representing
        SI_ACCESS structs, containing (guid, access mask, Name, flags). DefaultAccess indicates which of the
        AccessRights will be used initially when a new ACE is added (zero based).
        Flags can contain SI_ACCESS_SPECIFIC,SI_ACCESS_GENERAL,SI_ACCESS_CONTAINER,SI_ACCESS_PROPERTY,
              CONTAINER_INHERIT_ACE,INHERIT_ONLY_ACE,OBJECT_INHERIT_ACE
        NzObject type is not supportedzFull controlzGeneric readzGeneric writezStart/Stop/Pause servicezRead PermissionszChange permissionszChange ownerzDelete servicezStart servicezStop servicezPause/unpause servicezExecute user defined operationszRead configurationzChange configurationzList dependent serviceszQuery statuszQuery status (immediate)r   )r   NotImplementedErrorwin32serviceSERVICE_ALL_ACCESSr   SERVICE_GENERIC_READSERVICE_GENERIC_WRITESERVICE_GENERIC_EXECUTEr   r   r   win32conDELETESERVICE_STARTr   SERVICE_STOPSERVICE_PAUSE_CONTINUESERVICE_USER_DEFINED_CONTROLSERVICE_QUERY_CONFIGSERVICE_CHANGE_CONFIGSERVICE_ENUMERATE_DEPENDENTSSERVICE_QUERY_STATUSSERVICE_INTERROGATE)r   r*   r%   accessrightss       r   r   zServiceSecurity.GetAccessRightsb   sq    "x)?)?%&DEEE /!	 +^=NO,o?PQ'*!	 |%79JKy"68IJ{N4EFx(8:KL|1?DVW|0.BTU3'"	 91"	 1$"	 2&"	 9)"	 1"	 0*"	s?
@ a  r   c                 f    t          j        |t          t          t          t
          j        f          S )z2Converts generic access rights to specific rights.)r,   MapGenericMaskrA   rB   rC   r?   r@   )r   guidaceflagsmasks       r   r   zServiceSecurity.MapGeneric   s.    +$%'/	
 
 	
r   c                     t           ddffS )zkSpecifies which types of ACE inheritance are supported.
        Services don't use any inheritance
        r   zOnly current objectr   )r   s    r   r   zServiceSecurity.GetInheritTypes   s     13466r   c                     dS )z@Invoked each time a property sheet page is created or destroyed.N )r   hwndmsgpagetypes       r   r   z)ServiceSecurity.PropertySheetPageCallback   s	     tr   r   c                     t          j        | t          j        t           j                  }t          j        ||           dS )zNCreates an ACL editor dialog based on parameters returned by interface methodsN)	pythoncom
WrapObjectr   IID_ISecurityInformationIID_IUnknownEditSecurity)r   
owner_hwndisis      r   r`   zServiceSecurity.EditSecurity   s<    "-8):P
 
 	":s33333r   N)r   )__name__
__module____qualname__r   r^   _com_interfaces__public_methods_r   r   r   r   r   r   r   r   r`   rW   r   r   r   r   ,   s        %>?    O O O  
 
 
 O! O! O!b

 

 

7 7 7  4 4 4 4 4 4r   r   __main__).__doc__r"   r\   win32com.server.policywin32comrD   r,   r?   win32com.authorizationr   rF   rG   rH   rI   rC   rJ   rM   rN   rL   rA   rK   rB   ntsecurityconr   r   r   r   r   r	   r
   r   r   r   serverpolicyDesignatedWrapPolicyr   rc   OpenSCManagerSC_MANAGER_ENUMERATE_SERVICEscmEnumServicesStatussvcsCloseServiceHandlesir`   rW   r   r   <module>rx      s    
			                  0 0 0 0 0 0  )* /0  %'(&' /0  %: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
      d4 d4 d4 d4 d4ho,A d4 d4 d4N z
$,
$dL= C +<*3//D#L#C(((	a	$	$BOO r   