From 2cd42e85c5ed8ade867a7cfd11d04a493cefb3a6 Mon Sep 17 00:00:00 2001 From: henrypp Date: Thu, 14 May 2020 21:25:37 +0600 Subject: [PATCH] use _app_queryservicesid --- src/helper.cpp | 27 +++------------------------ 1 file changed, 3 insertions(+), 24 deletions(-) diff --git a/src/helper.cpp b/src/helper.cpp index cf96b0cf..e80b13a3 100644 --- a/src/helper.cpp +++ b/src/helper.cpp @@ -1963,32 +1963,11 @@ void _app_generate_services () if (!real_path.IsEmpty ()) real_path = _r_path_dospathfromnt (real_path); - // query service security identifier - UNICODE_STRING serviceNameUs = {0}; - RtlInitUnicodeString (&serviceNameUs, (PWSTR)service_name); - rstring sidstring; + LPVOID serviceSid = _app_queryservicesid (service_name); - LPBYTE serviceSid = nullptr; - ULONG serviceSidLength = 0; - - if (RtlCreateServiceSid (&serviceNameUs, serviceSid, &serviceSidLength) == STATUS_BUFFER_TOO_SMALL) - { - serviceSid = (LPBYTE)_r_mem_allocex (serviceSidLength, HEAP_ZERO_MEMORY); - - if (serviceSid) - { - if (NT_SUCCESS (RtlCreateServiceSid (&serviceNameUs, serviceSid, &serviceSidLength))) - { - sidstring = _r_str_fromsid (serviceSid); - } - else - { - _r_mem_free (serviceSid); - serviceSid = nullptr; - } - } - } + if (serviceSid) + sidstring = _r_str_fromsid (serviceSid); if (serviceSid && !sidstring.IsEmpty ()) {