Author: mturk
Date: Tue Apr 12 12:23:39 2005
New Revision: 161096
URL: http://svn.apache.org/viewcvs?view=rev&rev=161096
Log:
Finer grade access to the Service manager.
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/apsvcmgr/apsvcmgr.c
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunmgr/prunmgr.c
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/include/service.h
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/service.c
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/apsvcmgr/apsvcmgr.c
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/apsvcmgr/apsvcmgr.c?view=diff&r1=161095&r2=161096
==============================================================================
---
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/apsvcmgr/apsvcmgr.c
(original)
+++
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/apsvcmgr/apsvcmgr.c
Tue Apr 12 12:23:39 2005
@@ -262,14 +262,15 @@
switch (uMsg) {
case WM_USER+1:
hDlg = (HWND)lParam;
- hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE);
+ hSrv = apxCreateService(hPool, SC_MANAGER_CONNECT, FALSE);
if (!hSrv) {
EndDialog(hDlg, IDOK);
PostMessage(_gui_store->hMainWnd, WM_COMMAND,
MAKEWPARAM(IDMS_REFRESH, 0), 0);
return FALSE;
}
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
+ GENERIC_READ | GENERIC_EXECUTE)) {
apxCloseHandle(hSrv);
EndDialog(hDlg, IDOK);
PostMessage(_gui_store->hMainWnd, WM_COMMAND,
@@ -303,10 +304,11 @@
switch (uMsg) {
case WM_USER+1:
hDlg = (HWND)lParam;
- hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE);
+ hSrv = apxCreateService(hPool, SC_MANAGER_CONNECT, FALSE);
if (!hSrv)
return FALSE;
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
+ GENERIC_READ | GENERIC_EXECUTE)) {
apxCloseHandle(hSrv);
return FALSE;
}
@@ -337,10 +339,11 @@
switch (uMsg) {
case WM_USER+1:
hDlg = (HWND)lParam;
- hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE);
+ hSrv = apxCreateService(hPool, SC_MANAGER_CONNECT, FALSE);
if (!hSrv)
return FALSE;
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
+ GENERIC_READ | GENERIC_EXECUTE)) {
apxCloseHandle(hSrv);
return FALSE;
}
@@ -374,10 +377,11 @@
switch (uMsg) {
case WM_USER+1:
hDlg = (HWND)lParam;
- hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE);
+ hSrv = apxCreateService(hPool, SC_MANAGER_CONNECT, FALSE);
if (!hSrv)
return FALSE;
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
+ GENERIC_READ | GENERIC_EXECUTE)) {
apxCloseHandle(hSrv);
return FALSE;
}
@@ -648,9 +652,9 @@
return TRUE;
CLR_BIT_FLAG(_propertyChanged, 1);
- if (!(hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE)))
+ if (!(hSrv = apxCreateService(hPool, SC_MANAGER_CREATE_SERVICE, FALSE)))
return FALSE;
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
SERVICE_ALL_ACCESS)) {
apxCloseHandle(hSrv);
return FALSE;
}
@@ -685,9 +689,9 @@
return TRUE;
CLR_BIT_FLAG(_propertyChanged, 2);
- if (!(hSrv = apxCreateService(hPool, GENERIC_ALL, FALSE)))
+ if (!(hSrv = apxCreateService(hPool, SC_MANAGER_CREATE_SERVICE, FALSE)))
return FALSE;
- if (!apxServiceOpen(hSrv, _currentEntry->szServiceName)) {
+ if (!apxServiceOpen(hSrv, _currentEntry->szServiceName,
SERVICE_ALL_ACCESS)) {
apxCloseHandle(hSrv);
return FALSE;
}
@@ -1364,8 +1368,9 @@
if (apxYesNoMessage(apxLoadResource(IDS_DELSERVICEC,
0),
szT, TRUE)) {
APXHANDLE hSrv;
- if ((hSrv = apxCreateService(hPool, GENERIC_ALL,
FALSE))) {
- if (apxServiceOpen(hSrv,
_currentEntry->szServiceName)) {
+ if ((hSrv = apxCreateService(hPool,
SC_MANAGER_CONNECT, FALSE))) {
+ if (apxServiceOpen(hSrv,
_currentEntry->szServiceName,
+ SERVICE_ALL_ACCESS)) {
apxServiceDelete(hSrv);
RefreshServices(1);
}
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunmgr/prunmgr.c
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunmgr/prunmgr.c?view=diff&r1=161095&r2=161096
==============================================================================
---
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunmgr/prunmgr.c
(original)
+++
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunmgr/prunmgr.c
Tue Apr 12 12:23:39 2005
@@ -1580,18 +1580,20 @@
quiet = TRUE;
else if (lpCmdline->dwCmdIndex >= 2)
bEnableTry = TRUE;
- hService = apxCreateService(hPool, GENERIC_ALL, FALSE);
+ hService = apxCreateService(hPool, SC_MANAGER_CONNECT, FALSE);
if (IS_INVALID_HANDLE(hService)) {
if (!quiet)
apxDisplayError(TRUE, NULL, 0, "Unable to open the Service
Manager");
goto cleanup;
}
/* Open the main service handle */
- if (!apxServiceOpen(hService, lpCmdline->szApplication)) {
+ if (!apxServiceOpen(hService, lpCmdline->szApplication,
+ GENERIC_READ | GENERIC_EXECUTE)) {
LPWSTR w = lpCmdline->szApplication +
lstrlenW(lpCmdline->szApplication) - 1;
if (*w == L'w')
*w = L'\0';
- if (!apxServiceOpen(hService, lpCmdline->szApplication)) {
+ if (!apxServiceOpen(hService, lpCmdline->szApplication,
+ GENERIC_READ | GENERIC_EXECUTE)) {
if (!quiet)
apxDisplayError(TRUE, NULL, 0, "Unable to open the service
'%S'",
lpCmdline->szApplication);
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c?view=diff&r1=161095&r2=161096
==============================================================================
---
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
(original)
+++
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/apps/prunsrv/prunsrv.c
Tue Apr 12 12:23:39 2005
@@ -493,7 +493,7 @@
WCHAR szImage[SIZ_HUGLEN];
apxLogWrite(APXLOG_MARK_DEBUG "Installing service...");
- hService = apxCreateService(gPool, GENERIC_ALL, FALSE);
+ hService = apxCreateService(gPool, SC_MANAGER_CREATE_SERVICE, FALSE);
if (IS_INVALID_HANDLE(hService)) {
apxLogWrite(APXLOG_MARK_ERROR "Unable to open the Service Manager");
return FALSE;
@@ -558,13 +558,13 @@
BOOL rv = FALSE;
apxLogWrite(APXLOG_MARK_INFO "Deleting service...");
- hService = apxCreateService(gPool, GENERIC_ALL, FALSE);
+ hService = apxCreateService(gPool, SC_MANAGER_CONNECT, FALSE);
if (IS_INVALID_HANDLE(hService)) {
apxLogWrite(APXLOG_MARK_ERROR "Unable to open the Service Manager");
return FALSE;
}
/* Delete service will stop the service if running */
- if (apxServiceOpen(hService, lpCmdline->szApplication)) {
+ if (apxServiceOpen(hService, lpCmdline->szApplication,
SERVICE_ALL_ACCESS)) {
WCHAR szWndManagerClass[SIZ_RESLEN];
HANDLE hWndManager = NULL;
lstrcpyW(szWndManagerClass, lpCmdline->szApplication);
@@ -604,7 +604,8 @@
SetLastError(ERROR_SUCCESS);
/* Open the service */
- if (apxServiceOpen(hService, lpCmdline->szApplication)) {
+ if (apxServiceOpen(hService, lpCmdline->szApplication,
+ GENERIC_READ | GENERIC_EXECUTE)) {
rv = apxServiceControl(hService,
SERVICE_CONTROL_STOP,
0,
@@ -633,14 +634,14 @@
apxLogWrite(APXLOG_MARK_INFO "Updating service...");
- hService = apxCreateService(gPool, GENERIC_ALL, FALSE);
+ hService = apxCreateService(gPool, SC_MANAGER_CREATE_SERVICE, FALSE);
if (IS_INVALID_HANDLE(hService)) {
apxLogWrite(APXLOG_MARK_ERROR "Unable to open the Service Manager");
return FALSE;
}
SetLastError(0);
/* Open the service */
- if (apxServiceOpen(hService, lpCmdline->szApplication)) {
+ if (apxServiceOpen(hService, lpCmdline->szApplication,
SERVICE_ALL_ACCESS)) {
apxServiceSetNames(hService,
NULL, /* Never update the ImagePath
*/
SO_DISPLAYNAME,
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/include/service.h
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/include/service.h?view=diff&r1=161095&r2=161096
==============================================================================
--- jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/include/service.h
(original)
+++ jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/include/service.h
Tue Apr 12 12:23:39 2005
@@ -33,7 +33,7 @@
APXHANDLE apxCreateService(APXHANDLE hPool, DWORD dwOptions,
BOOL bManagerMode);
-BOOL apxServiceOpen(APXHANDLE hService, LPCWSTR szServiceName);
+BOOL apxServiceOpen(APXHANDLE hService, LPCWSTR szServiceName, DWORD
dwOptions);
BOOL apxServiceSetNames(APXHANDLE hService, LPCWSTR szImagePath,
Modified:
jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/service.c
URL:
http://svn.apache.org/viewcvs/jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/service.c?view=diff&r1=161095&r2=161096
==============================================================================
--- jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/service.c
(original)
+++ jakarta/commons/proper/daemon/trunk/src/native/nt/procrun/src/service.c Tue
Apr 12 12:23:39 2005
@@ -28,8 +28,6 @@
u,p,d)
typedef struct APXSERVICE {
- /* Service access options */
- DWORD dwOptions;
/* Are we a service manager or we are the service itself */
BOOL bManagerMode;
/* Handle to the current service */
@@ -90,7 +88,6 @@
}
hService->dwType = APXHANDLE_TYPE_SERVICE;
lpService = APXHANDLE_DATA(hService);
- lpService->dwOptions = dwOptions;
lpService->hManager = hManager;
lpService->bManagerMode = bManagerMode;
@@ -98,7 +95,7 @@
}
BOOL
-apxServiceOpen(APXHANDLE hService, LPCWSTR szServiceName)
+apxServiceOpen(APXHANDLE hService, LPCWSTR szServiceName, DWORD dwOptions)
{
LPAPXSERVICE lpService;
DWORD dwNeeded;
@@ -122,7 +119,7 @@
/* Open the service */
lpService->hService = OpenServiceW(lpService->hManager,
szServiceName,
- lpService->dwOptions);
+ dwOptions);
if (IS_INVALID_HANDLE(lpService->hService)) {
apxLogWrite(APXLOG_MARK_SYSERR);
@@ -405,7 +402,7 @@
lpService->hService = CreateServiceW(lpService->hManager,
szServiceName,
szDisplayName,
- lpService->dwOptions,
+ SERVICE_ALL_ACCESS,
dwServiceType,
dwStartType,
SERVICE_ERROR_NORMAL,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]