From: "Erich E. Hoover" Subject: [PATCH 4/7] advapi32: Support service objects in SetNamedSecurityInfo (try 4). Message-Id: Date: Mon, 17 Dec 2012 18:59:20 -0700 This patch adds support for service objects (SE_SERVICE) in SetNamedSecurityInfo by utilizing OpenSCManagerW, OpenServiceW, and CloseServiceHandle. From 4b83d83af073cd028f3b70d0bab31604126e6daf Mon Sep 17 00:00:00 2001 From: Erich Hoover Date: Mon, 17 Dec 2012 13:36:41 -0700 Subject: advapi32: Support service objects in SetNamedSecurityInfo. --- dlls/advapi32/security.c | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/dlls/advapi32/security.c b/dlls/advapi32/security.c index a89a3b4..8b4a114 100644 --- a/dlls/advapi32/security.c +++ b/dlls/advapi32/security.c @@ -3987,8 +3987,12 @@ DWORD WINAPI SetNamedSecurityInfoW(LPWSTR pObjectName, TRACE( "%s %d %d %p %p %p %p\n", debugstr_w(pObjectName), ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl); - if (ObjectType != SE_FILE_OBJECT) + switch (ObjectType) { + case SE_FILE_OBJECT: + case SE_SERVICE: + break; + default: FIXME( "Object type %d is not currently supported.\n", ObjectType ); return ERROR_SUCCESS; } @@ -4002,11 +4006,27 @@ DWORD WINAPI SetNamedSecurityInfoW(LPWSTR pObjectName, if (SecurityInfo & SACL_SECURITY_INFORMATION) access |= ACCESS_SYSTEM_SECURITY; - err = get_security_file( pObjectName, access, &handle ); + switch (ObjectType) + { + case SE_SERVICE: + err = get_security_service( pObjectName, access, &handle ); + break; + default: /* SE_FILE_OBJECT */ + err = get_security_file( pObjectName, access, &handle ); + break; + } if (err != ERROR_SUCCESS) return err; err = SetSecurityInfo( handle, ObjectType, SecurityInfo, psidOwner, psidGroup, pDacl, pSacl ); - CloseHandle( handle ); + switch (ObjectType) + { + case SE_SERVICE: + CloseServiceHandle( handle ); + break; + default: /* SE_FILE_OBJECT */ + CloseHandle( handle ); + break; + } return err; } -- 1.7.9.5