mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Adding some service related definition + added services specific access right to security.py
This commit is contained in:
@@ -17,4 +17,84 @@
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_STRING 2
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_LEVEL 3
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ANY 4
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
|
||||
#define SERVICE_TRIGGER_DATA_TYPE_KEYWORD_ALL 5
|
||||
|
||||
// Specific Access Rights are in <specific_access_right.txt>
|
||||
|
||||
|
||||
#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
|
||||
|
||||
|
||||
#define SERVICE_KERNEL_DRIVER 0x00000001
|
||||
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
|
||||
#define SERVICE_ADAPTER 0x00000004
|
||||
#define SERVICE_RECOGNIZER_DRIVER 0x00000008
|
||||
|
||||
#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER)
|
||||
|
||||
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
|
||||
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
|
||||
|
||||
#define SERVICE_USER_OWN_PROCESS 0x00000050
|
||||
#define SERVICE_USER_SHARE_PROCESS 0x00000060
|
||||
|
||||
#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
|
||||
|
||||
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
|
||||
|
||||
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
|
||||
|
||||
|
||||
#define SERVICE_BOOT_START 0x00000000
|
||||
#define SERVICE_SYSTEM_START 0x00000001
|
||||
#define SERVICE_AUTO_START 0x00000002
|
||||
#define SERVICE_DEMAND_START 0x00000003
|
||||
#define SERVICE_DISABLED 0x00000004
|
||||
|
||||
#define SERVICE_ERROR_IGNORE 0x00000000
|
||||
#define SERVICE_ERROR_NORMAL 0x00000001
|
||||
#define SERVICE_ERROR_SEVERE 0x00000002
|
||||
#define SERVICE_ERROR_CRITICAL 0x00000003
|
||||
|
||||
#define SERVICE_ACTIVE 0x00000001
|
||||
#define SERVICE_INACTIVE 0x00000002
|
||||
#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
|
||||
|
||||
#define SERVICE_CONTROL_STOP 0x00000001
|
||||
#define SERVICE_CONTROL_PAUSE 0x00000002
|
||||
#define SERVICE_CONTROL_CONTINUE 0x00000003
|
||||
#define SERVICE_CONTROL_INTERROGATE 0x00000004
|
||||
#define SERVICE_CONTROL_SHUTDOWN 0x00000005
|
||||
#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
|
||||
#define SERVICE_CONTROL_NETBINDADD 0x00000007
|
||||
#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
|
||||
#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
|
||||
#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
|
||||
#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
|
||||
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
|
||||
#define SERVICE_CONTROL_POWEREVENT 0x0000000D
|
||||
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
|
||||
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
|
||||
#define SERVICE_CONTROL_TIMECHANGE 0x00000010
|
||||
#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
|
||||
|
||||
#define SERVICE_STOPPED 0x00000001
|
||||
#define SERVICE_START_PENDING 0x00000002
|
||||
#define SERVICE_STOP_PENDING 0x00000003
|
||||
#define SERVICE_RUNNING 0x00000004
|
||||
#define SERVICE_CONTINUE_PENDING 0x00000005
|
||||
#define SERVICE_PAUSE_PENDING 0x00000006
|
||||
#define SERVICE_PAUSED 0x00000007
|
||||
|
||||
|
||||
#define SERVICE_ACCEPT_STOP 0x00000001
|
||||
#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
|
||||
#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
|
||||
#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
|
||||
#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
|
||||
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
|
||||
#define SERVICE_ACCEPT_POWEREVENT 0x00000040
|
||||
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
|
||||
#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
|
||||
#define SERVICE_ACCEPT_TIMECHANGE 0x00000200
|
||||
#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
|
||||
@@ -289,4 +289,49 @@
|
||||
#define FILE_MAP_WRITE SECTION_MAP_WRITE
|
||||
#define FILE_MAP_READ SECTION_MAP_READ
|
||||
#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
|
||||
#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT
|
||||
#define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT
|
||||
|
||||
|
||||
//
|
||||
// Service object specific access type
|
||||
//
|
||||
#define SERVICE_QUERY_CONFIG 0x0001
|
||||
#define SERVICE_CHANGE_CONFIG 0x0002
|
||||
#define SERVICE_QUERY_STATUS 0x0004
|
||||
#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
|
||||
#define SERVICE_START 0x0010
|
||||
#define SERVICE_STOP 0x0020
|
||||
#define SERVICE_PAUSE_CONTINUE 0x0040
|
||||
#define SERVICE_INTERROGATE 0x0080
|
||||
#define SERVICE_USER_DEFINED_CONTROL 0x0100
|
||||
|
||||
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
|
||||
SERVICE_QUERY_CONFIG | \
|
||||
SERVICE_CHANGE_CONFIG | \
|
||||
SERVICE_QUERY_STATUS | \
|
||||
SERVICE_ENUMERATE_DEPENDENTS | \
|
||||
SERVICE_START | \
|
||||
SERVICE_STOP | \
|
||||
SERVICE_PAUSE_CONTINUE | \
|
||||
SERVICE_INTERROGATE | \
|
||||
SERVICE_USER_DEFINED_CONTROL)
|
||||
|
||||
|
||||
//
|
||||
// Service Control Manager object specific access types
|
||||
//
|
||||
|
||||
#define SC_MANAGER_CONNECT 0x0001
|
||||
#define SC_MANAGER_CREATE_SERVICE 0x0002
|
||||
#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
|
||||
#define SC_MANAGER_LOCK 0x0008
|
||||
#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
|
||||
#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
|
||||
|
||||
#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | \
|
||||
SC_MANAGER_CONNECT | \
|
||||
SC_MANAGER_CREATE_SERVICE | \
|
||||
SC_MANAGER_ENUMERATE_SERVICE | \
|
||||
SC_MANAGER_LOCK | \
|
||||
SC_MANAGER_QUERY_LOCK_STATUS | \
|
||||
SC_MANAGER_MODIFY_BOOT_CONFIG)
|
||||
@@ -429,102 +429,6 @@
|
||||
|
||||
|
||||
|
||||
#define SC_MANAGER_CONNECT 0x0001
|
||||
#define SC_MANAGER_CREATE_SERVICE 0x0002
|
||||
#define SC_MANAGER_ENUMERATE_SERVICE 0x0004
|
||||
#define SC_MANAGER_LOCK 0x0008
|
||||
#define SC_MANAGER_QUERY_LOCK_STATUS 0x0010
|
||||
#define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020
|
||||
|
||||
#define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SC_MANAGER_CONNECT | SC_MANAGER_CREATE_SERVICE | SC_MANAGER_ENUMERATE_SERVICE | SC_MANAGER_LOCK | SC_MANAGER_QUERY_LOCK_STATUS | SC_MANAGER_MODIFY_BOOT_CONFIG)
|
||||
|
||||
#define SERVICE_QUERY_CONFIG 0x0001
|
||||
#define SERVICE_CHANGE_CONFIG 0x0002
|
||||
#define SERVICE_QUERY_STATUS 0x0004
|
||||
#define SERVICE_ENUMERATE_DEPENDENTS 0x0008
|
||||
#define SERVICE_START 0x0010
|
||||
#define SERVICE_STOP 0x0020
|
||||
#define SERVICE_PAUSE_CONTINUE 0x0040
|
||||
#define SERVICE_INTERROGATE 0x0080
|
||||
#define SERVICE_USER_DEFINED_CONTROL 0x0100
|
||||
|
||||
#define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL)
|
||||
|
||||
|
||||
#define SERVICE_RUNS_IN_SYSTEM_PROCESS 0x00000001
|
||||
|
||||
|
||||
#define SERVICE_KERNEL_DRIVER 0x00000001
|
||||
#define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
|
||||
#define SERVICE_ADAPTER 0x00000004
|
||||
#define SERVICE_RECOGNIZER_DRIVER 0x00000008
|
||||
|
||||
#define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER)
|
||||
|
||||
#define SERVICE_WIN32_OWN_PROCESS 0x00000010
|
||||
#define SERVICE_WIN32_SHARE_PROCESS 0x00000020
|
||||
#define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS)
|
||||
|
||||
#define SERVICE_INTERACTIVE_PROCESS 0x00000100
|
||||
|
||||
#define SERVICE_TYPE_ALL (SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS)
|
||||
|
||||
|
||||
#define SERVICE_BOOT_START 0x00000000
|
||||
#define SERVICE_SYSTEM_START 0x00000001
|
||||
#define SERVICE_AUTO_START 0x00000002
|
||||
#define SERVICE_DEMAND_START 0x00000003
|
||||
#define SERVICE_DISABLED 0x00000004
|
||||
|
||||
#define SERVICE_ERROR_IGNORE 0x00000000
|
||||
#define SERVICE_ERROR_NORMAL 0x00000001
|
||||
#define SERVICE_ERROR_SEVERE 0x00000002
|
||||
#define SERVICE_ERROR_CRITICAL 0x00000003
|
||||
|
||||
#define SERVICE_ACTIVE 0x00000001
|
||||
#define SERVICE_INACTIVE 0x00000002
|
||||
#define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE)
|
||||
|
||||
#define SERVICE_CONTROL_STOP 0x00000001
|
||||
#define SERVICE_CONTROL_PAUSE 0x00000002
|
||||
#define SERVICE_CONTROL_CONTINUE 0x00000003
|
||||
#define SERVICE_CONTROL_INTERROGATE 0x00000004
|
||||
#define SERVICE_CONTROL_SHUTDOWN 0x00000005
|
||||
#define SERVICE_CONTROL_PARAMCHANGE 0x00000006
|
||||
#define SERVICE_CONTROL_NETBINDADD 0x00000007
|
||||
#define SERVICE_CONTROL_NETBINDREMOVE 0x00000008
|
||||
#define SERVICE_CONTROL_NETBINDENABLE 0x00000009
|
||||
#define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A
|
||||
#define SERVICE_CONTROL_DEVICEEVENT 0x0000000B
|
||||
#define SERVICE_CONTROL_HARDWAREPROFILECHANGE 0x0000000C
|
||||
#define SERVICE_CONTROL_POWEREVENT 0x0000000D
|
||||
#define SERVICE_CONTROL_SESSIONCHANGE 0x0000000E
|
||||
#define SERVICE_CONTROL_PRESHUTDOWN 0x0000000F
|
||||
#define SERVICE_CONTROL_TIMECHANGE 0x00000010
|
||||
#define SERVICE_CONTROL_TRIGGEREVENT 0x00000020
|
||||
|
||||
#define SERVICE_STOPPED 0x00000001
|
||||
#define SERVICE_START_PENDING 0x00000002
|
||||
#define SERVICE_STOP_PENDING 0x00000003
|
||||
#define SERVICE_RUNNING 0x00000004
|
||||
#define SERVICE_CONTINUE_PENDING 0x00000005
|
||||
#define SERVICE_PAUSE_PENDING 0x00000006
|
||||
#define SERVICE_PAUSED 0x00000007
|
||||
|
||||
|
||||
#define SERVICE_ACCEPT_STOP 0x00000001
|
||||
#define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002
|
||||
#define SERVICE_ACCEPT_SHUTDOWN 0x00000004
|
||||
#define SERVICE_ACCEPT_PARAMCHANGE 0x00000008
|
||||
#define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010
|
||||
#define SERVICE_ACCEPT_HARDWAREPROFILECHANGE 0x00000020
|
||||
#define SERVICE_ACCEPT_POWEREVENT 0x00000040
|
||||
#define SERVICE_ACCEPT_SESSIONCHANGE 0x00000080
|
||||
#define SERVICE_ACCEPT_PRESHUTDOWN 0x00000100
|
||||
#define SERVICE_ACCEPT_TIMECHANGE 0x00000200
|
||||
#define SERVICE_ACCEPT_TRIGGEREVENT 0x00000400
|
||||
|
||||
|
||||
#define DRIVE_UNKNOWN 0
|
||||
#define DRIVE_NO_ROOT_DIR 1
|
||||
#define DRIVE_REMOVABLE 2
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
ATOM AddAtomA(
|
||||
LPCSTR lpString
|
||||
);
|
||||
|
||||
|
||||
ATOM AddAtomW(
|
||||
LPCWSTR lpString
|
||||
);
|
||||
|
||||
|
||||
ATOM GlobalAddAtomA(
|
||||
LPCSTR lpString
|
||||
);
|
||||
|
||||
ATOM GlobalAddAtomExA(
|
||||
LPCSTR lpString,
|
||||
DWORD Flags
|
||||
);
|
||||
|
||||
ATOM GlobalAddAtomExW(
|
||||
LPCWSTR lpString,
|
||||
DWORD Flags
|
||||
);
|
||||
|
||||
|
||||
ATOM GlobalAddAtomW(
|
||||
LPCWSTR lpString
|
||||
);
|
||||
|
||||
|
||||
ATOM GlobalDeleteAtom(
|
||||
ATOM nAtom
|
||||
);
|
||||
|
||||
|
||||
UINT GlobalGetAtomNameA(
|
||||
ATOM nAtom,
|
||||
LPSTR lpBuffer,
|
||||
INT nSize
|
||||
);
|
||||
|
||||
UINT GlobalGetAtomNameW(
|
||||
ATOM nAtom,
|
||||
LPWSTR lpBuffer,
|
||||
INT nSize
|
||||
);
|
||||
@@ -0,0 +1,74 @@
|
||||
SC_HANDLE WINAPI OpenSCManagerA(
|
||||
__in_opt LPCSTR lpMachineName,
|
||||
__in_opt LPCSTR lpDatabaseName,
|
||||
__in DWORD dwDesiredAccess
|
||||
);
|
||||
|
||||
SC_HANDLE WINAPI OpenSCManagerW(
|
||||
__in_opt LPCWSTR lpMachineName,
|
||||
__in_opt LPCWSTR lpDatabaseName,
|
||||
__in DWORD dwDesiredAccess
|
||||
);
|
||||
|
||||
BOOL WINAPI CloseServiceHandle(
|
||||
_In_ SC_HANDLE hSCObject
|
||||
);
|
||||
|
||||
BOOL WINAPI EnumServicesStatusExA(
|
||||
__in SC_HANDLE hSCManager,
|
||||
__in SC_ENUM_TYPE InfoLevel,
|
||||
__in DWORD dwServiceType,
|
||||
__in DWORD dwServiceState,
|
||||
_Out_opt_ LPBYTE lpServices,
|
||||
__in DWORD cbBufSize,
|
||||
__out LPDWORD pcbBytesNeeded,
|
||||
__out LPDWORD lpServicesReturned,
|
||||
__inout_opt LPDWORD lpResumeHandle,
|
||||
__in_opt LPCSTR pszGroupName
|
||||
);
|
||||
|
||||
|
||||
BOOL WINAPI EnumServicesStatusExW(
|
||||
__in SC_HANDLE hSCManager,
|
||||
__in SC_ENUM_TYPE InfoLevel,
|
||||
__in DWORD dwServiceType,
|
||||
__in DWORD dwServiceState,
|
||||
_Out_opt_ LPBYTE lpServices,
|
||||
__in DWORD cbBufSize,
|
||||
__out LPDWORD pcbBytesNeeded,
|
||||
__out LPDWORD lpServicesReturned,
|
||||
__inout_opt LPDWORD lpResumeHandle,
|
||||
__in_opt LPCWSTR pszGroupName
|
||||
);
|
||||
|
||||
|
||||
BOOL WINAPI StartServiceA(
|
||||
_In_ SC_HANDLE hService,
|
||||
_In_ DWORD dwNumServiceArgs,
|
||||
_In_opt_ LPCSTR *lpServiceArgVectors
|
||||
);
|
||||
|
||||
BOOL WINAPI StartServiceW(
|
||||
_In_ SC_HANDLE hService,
|
||||
_In_ DWORD dwNumServiceArgs,
|
||||
_In_opt_ LPCWSTR *lpServiceArgVectors
|
||||
);
|
||||
|
||||
SC_HANDLE WINAPI OpenServiceA(
|
||||
_In_ SC_HANDLE hSCManager,
|
||||
_In_ LPCSTR lpServiceName,
|
||||
_In_ DWORD dwDesiredAccess
|
||||
);
|
||||
|
||||
|
||||
SC_HANDLE WINAPI OpenServiceW(
|
||||
_In_ SC_HANDLE hSCManager,
|
||||
_In_ LPCWSTR lpServiceName,
|
||||
_In_ DWORD dwDesiredAccess
|
||||
);
|
||||
|
||||
BOOL ControlService(
|
||||
SC_HANDLE hService,
|
||||
DWORD dwControl,
|
||||
LPSERVICE_STATUS lpServiceStatus
|
||||
);
|
||||
@@ -181,6 +181,18 @@ COM_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
gdef.COM_ACTIVATE_REMOTE,
|
||||
)
|
||||
|
||||
SERVICE_ACCESS_RIGHT = gdef.FlagMapper(
|
||||
gdef.SERVICE_QUERY_CONFIG,
|
||||
gdef.SERVICE_CHANGE_CONFIG,
|
||||
gdef.SERVICE_QUERY_STATUS,
|
||||
gdef.SERVICE_ENUMERATE_DEPENDENTS,
|
||||
gdef.SERVICE_START,
|
||||
gdef.SERVICE_STOP,
|
||||
gdef.SERVICE_PAUSE_CONTINUE,
|
||||
gdef.SERVICE_INTERROGATE,
|
||||
gdef.SERVICE_USER_DEFINED_CONTROL,
|
||||
)
|
||||
|
||||
|
||||
SPECIFIC_ACCESS_RIGTH_BY_TYPE = {
|
||||
None: gdef.FlagMapper(),
|
||||
@@ -204,6 +216,7 @@ SPECIFIC_ACCESS_RIGTH_BY_TYPE = {
|
||||
"job": JOB_ACCESS_RIGHT,
|
||||
"key": KEY_ACCESS_RIGHT,
|
||||
"com": COM_ACCESS_RIGHT,
|
||||
"service": SERVICE_ACCESS_RIGHT,
|
||||
}
|
||||
|
||||
# SD
|
||||
@@ -646,6 +659,15 @@ class SecurityDescriptor(gdef.PSECURITY_DESCRIPTOR):
|
||||
gdef.SCOPE_SECURITY_INFORMATION |
|
||||
gdef.PROCESS_TRUST_LABEL_SECURITY_INFORMATION
|
||||
)
|
||||
|
||||
# https://docs.microsoft.com/en-us/windows/win32/api/winsvc/nf-winsvc-queryserviceobjectsecurity
|
||||
# Default flags for services
|
||||
SERVICE_SECURITY_INFORMATION = (
|
||||
gdef.OWNER_SECURITY_INFORMATION |
|
||||
gdef.GROUP_SECURITY_INFORMATION |
|
||||
gdef.DACL_SECURITY_INFORMATION
|
||||
)
|
||||
|
||||
"""The default ``flags`` value for functions expecting a
|
||||
`SECURITY_INFORMATION <https://docs.microsoft.com/en-us/windows/desktop/SecAuthZ/security-information>`_.
|
||||
|
||||
@@ -831,6 +853,13 @@ class SecurityDescriptor(gdef.PSECURITY_DESCRIPTOR):
|
||||
"""Retrieve the security descriptor for the file ``filename``"""
|
||||
return cls._from_name_and_type(filename, gdef.SE_FILE_OBJECT, flags=flags, query_sacl=query_sacl)
|
||||
|
||||
@classmethod
|
||||
def from_service(cls, filename, query_sacl=False, flags=SERVICE_SECURITY_INFORMATION):
|
||||
"""Retrieve the security descriptor for the service named ``service``"""
|
||||
sd = cls._from_name_and_type(filename, gdef.SE_SERVICE, flags=flags, query_sacl=query_sacl)
|
||||
sd.obj_type = "service"
|
||||
return sd
|
||||
|
||||
@classmethod
|
||||
def from_handle(cls, handle, query_sacl=False, flags=DEFAULT_SECURITY_INFORMATION, obj_type=None):
|
||||
"""Retrieve the security descriptor for the kernel object described by``handle``"""
|
||||
|
||||
Reference in New Issue
Block a user