summaryrefslogtreecommitdiff
path: root/librpc
diff options
context:
space:
mode:
Diffstat (limited to 'librpc')
-rw-r--r--librpc/idl/svcctl.idl47
1 files changed, 46 insertions, 1 deletions
diff --git a/librpc/idl/svcctl.idl b/librpc/idl/svcctl.idl
index 3eb686fe15..fa8e10988c 100644
--- a/librpc/idl/svcctl.idl
+++ b/librpc/idl/svcctl.idl
@@ -4,7 +4,7 @@
svcctl interface definitions
*/
-import "misc.idl";
+import "misc.idl", "security.idl";
[ uuid("367abb81-9844-35f1-ad32-98f038001003"),
version(2.0),
pointer_default(unique),
@@ -227,6 +227,9 @@ import "misc.idl";
/*****************/
/* Function 0x0f */
+
+ /* Service Control Manager Bits */
+
typedef [bitmap32bit] bitmap {
SC_RIGHT_MGR_CONNECT = 0x0001,
SC_RIGHT_MGR_CREATE_SERVICE = 0x0002,
@@ -236,6 +239,23 @@ import "misc.idl";
SC_RIGHT_MGR_MODIFY_BOOT_CONFIG = 0x0020
} svcctl_MgrAccessMask;
+ const int SC_MANAGER_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_MGR_CONNECT |
+ SC_RIGHT_MGR_ENUMERATE_SERVICE |
+ SC_RIGHT_MGR_QUERY_LOCK_STATUS);
+
+ const int SC_MANAGER_EXECUTE_ACCESS = SC_MANAGER_READ_ACCESS;
+
+ const int SC_MANAGER_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SC_MANAGER_READ_ACCESS |
+ SC_RIGHT_MGR_CREATE_SERVICE |
+ SC_RIGHT_MGR_LOCK |
+ SC_RIGHT_MGR_MODIFY_BOOT_CONFIG);
+
+ const int SC_MANAGER_ALL_ACCESS = SC_MANAGER_WRITE_ACCESS;
+
WERROR svcctl_OpenSCManagerW(
[in,unique] [string,charset(UTF16)] uint16 *MachineName,
[in,unique] [string,charset(UTF16)] uint16 *DatabaseName,
@@ -245,6 +265,9 @@ import "misc.idl";
/*****************/
/* Function 0x10 */
+
+ /* Service Object Bits */
+
typedef [bitmap32bit] bitmap {
SC_RIGHT_SVC_QUERY_CONFIG = 0x0001,
SC_RIGHT_SVC_CHANGE_CONFIG = 0x0002,
@@ -257,6 +280,28 @@ import "misc.idl";
SC_RIGHT_SVC_USER_DEFINED_CONTROL = 0x0100
} svcctl_ServiceAccessMask;
+ const int SERVICE_READ_ACCESS =
+ (SEC_STD_READ_CONTROL |
+ SC_RIGHT_SVC_ENUMERATE_DEPENDENTS |
+ SC_RIGHT_SVC_INTERROGATE |
+ SC_RIGHT_SVC_QUERY_CONFIG |
+ SC_RIGHT_SVC_QUERY_STATUS |
+ SC_RIGHT_SVC_USER_DEFINED_CONTROL);
+
+ const int SERVICE_EXECUTE_ACCESS =
+ (SERVICE_READ_ACCESS |
+ SC_RIGHT_SVC_START |
+ SC_RIGHT_SVC_STOP |
+ SC_RIGHT_SVC_PAUSE_CONTINUE);
+
+ const int SERVICE_WRITE_ACCESS =
+ (SEC_STD_REQUIRED |
+ SERVICE_READ_ACCESS |
+ SERVICE_EXECUTE_ACCESS |
+ SC_RIGHT_SVC_CHANGE_CONFIG);
+
+ const int SERVICE_ALL_ACCESS = SERVICE_WRITE_ACCESS;
+
WERROR svcctl_OpenServiceW(
[in,ref] policy_handle *scmanager_handle,
[in] [string,charset(UTF16)] uint16 ServiceName[],