ole: Reduce the access rights required by start_local_service.

This commit is contained in:
Robert Shearman 2006-01-10 20:06:22 +01:00 committed by Alexandre Julliard
parent c46386ff5c
commit 8e5b36147d

View File

@ -677,20 +677,20 @@ static HRESULT create_server(REFCLSID rclsid)
/* /*
* start_local_service() - start a service given its name and parameters * start_local_service() - start a service given its name and parameters
*/ */
static DWORD start_local_service(LPCWSTR name, DWORD num, LPWSTR *params) static DWORD start_local_service(LPCWSTR name, DWORD num, LPCWSTR *params)
{ {
SC_HANDLE handle, hsvc; SC_HANDLE handle, hsvc;
DWORD r = ERROR_FUNCTION_FAILED; DWORD r = ERROR_FUNCTION_FAILED;
TRACE("Starting service %s %ld params\n", debugstr_w(name), num); TRACE("Starting service %s %ld params\n", debugstr_w(name), num);
handle = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS); handle = OpenSCManagerW(NULL, NULL, SC_MANAGER_CONNECT);
if (!handle) if (!handle)
return r; return r;
hsvc = OpenServiceW(handle, name, SC_MANAGER_ALL_ACCESS); hsvc = OpenServiceW(handle, name, SERVICE_START);
if (hsvc) if (hsvc)
{ {
if(StartServiceW(hsvc, num, (LPCWSTR*)params)) if(StartServiceW(hsvc, num, params))
r = ERROR_SUCCESS; r = ERROR_SUCCESS;
else else
r = GetLastError(); r = GetLastError();
@ -768,7 +768,7 @@ static HRESULT create_local_service(REFCLSID rclsid)
num_args++; num_args++;
RegQueryValueExW(hkey, szServiceParams, NULL, &type, (LPBYTE)args[0], &sz); RegQueryValueExW(hkey, szServiceParams, NULL, &type, (LPBYTE)args[0], &sz);
} }
r = start_local_service(buf, num_args, args); r = start_local_service(buf, num_args, (LPCWSTR *)args);
if (r==ERROR_SUCCESS) if (r==ERROR_SUCCESS)
hres = S_OK; hres = S_OK;
HeapFree(GetProcessHeap(),0,args[0]); HeapFree(GetProcessHeap(),0,args[0]);