79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
|
# Copyright 2017 Cloudbase Solutions Srl
|
||
|
# All Rights Reserved.
|
||
|
#
|
||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||
|
# not use this file except in compliance with the License. You may obtain
|
||
|
# a copy of the License at
|
||
|
#
|
||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||
|
#
|
||
|
# Unless required by applicable law or agreed to in writing, software
|
||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||
|
# License for the specific language governing permissions and limitations
|
||
|
# under the License.
|
||
|
|
||
|
import ctypes
|
||
|
|
||
|
from os_win.utils.winapi import wintypes
|
||
|
|
||
|
lib_handle = None
|
||
|
|
||
|
|
||
|
class TRUSTEE(ctypes.Structure):
|
||
|
_fields_ = [
|
||
|
('pMultipleTrustee', wintypes.PVOID),
|
||
|
('MultipleTrusteeOperation', wintypes.INT),
|
||
|
('TrusteeForm', wintypes.INT),
|
||
|
('TrusteeType', wintypes.INT),
|
||
|
('pstrName', wintypes.LPWSTR)
|
||
|
]
|
||
|
|
||
|
|
||
|
class EXPLICIT_ACCESS(ctypes.Structure):
|
||
|
_fields_ = [
|
||
|
('grfAccessPermissions', wintypes.DWORD),
|
||
|
('grfAccessMode', wintypes.INT),
|
||
|
('grfInheritance', wintypes.DWORD),
|
||
|
('Trustee', TRUSTEE)
|
||
|
]
|
||
|
|
||
|
|
||
|
PEXPLICIT_ACCESS = ctypes.POINTER(EXPLICIT_ACCESS)
|
||
|
|
||
|
|
||
|
def register():
|
||
|
global lib_handle
|
||
|
lib_handle = ctypes.windll.advapi32
|
||
|
|
||
|
lib_handle.GetNamedSecurityInfoW.argtypes = [
|
||
|
wintypes.LPCWSTR,
|
||
|
wintypes.INT,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID
|
||
|
]
|
||
|
lib_handle.GetNamedSecurityInfoW.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.SetEntriesInAclW.argtypes = [
|
||
|
wintypes.ULONG,
|
||
|
PEXPLICIT_ACCESS,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID
|
||
|
]
|
||
|
lib_handle.SetEntriesInAclW.restype = wintypes.DWORD
|
||
|
|
||
|
lib_handle.SetNamedSecurityInfoW.argtypes = [
|
||
|
wintypes.LPWSTR,
|
||
|
wintypes.INT,
|
||
|
wintypes.DWORD,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID,
|
||
|
wintypes.PVOID
|
||
|
]
|
||
|
lib_handle.SetNamedSecurityInfoW.restype = wintypes.DWORD
|