From 235dd0a6d649f460e89e2e047290f6068c55550a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 16 Jun 2012 20:36:17 +0000 Subject: [PATCH] =?utf8?q?[SERVICES]=20Correct=20behaviour=20of=20setting?= =?utf8?q?=20the=20service=20description.=20Patch=20by=20Herm=C3=A8s=20B?= =?utf8?q?=C3=A9lusca.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit See issue #7124 for more details. svn path=/trunk/; revision=56740 --- reactos/base/system/services/rpcserver.c | 37 ++++++++++++++++-------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/reactos/base/system/services/rpcserver.c b/reactos/base/system/services/rpcserver.c index 71a5de34c2a..b21fee823b3 100644 --- a/reactos/base/system/services/rpcserver.c +++ b/reactos/base/system/services/rpcserver.c @@ -5088,22 +5088,35 @@ DWORD RChangeServiceConfig2W( if (Info.dwInfoLevel == SERVICE_CONFIG_DESCRIPTION) { - LPSERVICE_DESCRIPTIONW lpServiceDescription; - - lpServiceDescription = (LPSERVICE_DESCRIPTIONW)Info.psd; + LPSERVICE_DESCRIPTIONW lpServiceDescription = (LPSERVICE_DESCRIPTIONW)Info.psd; + /* Modify the service description, if specified */ if (lpServiceDescription != NULL && lpServiceDescription->lpDescription != NULL) { - DPRINT("Setting value %S\n", lpServiceDescription->lpDescription); - dwError = RegSetValueExW(hServiceKey, - L"Description", - 0, - REG_SZ, - (LPBYTE)lpServiceDescription->lpDescription, - (wcslen(lpServiceDescription->lpDescription) + 1) * sizeof(WCHAR)); - if (dwError != ERROR_SUCCESS) - goto done; + /* If the description is "" then we delete it */ + if (*lpServiceDescription->lpDescription == 0) + { + DPRINT("Delete service description\n"); + dwError = RegDeleteValueW(hServiceKey, L"Description"); + + if (dwError == ERROR_FILE_NOT_FOUND) + dwError = ERROR_SUCCESS; + } + else + { + DPRINT("Setting service description value %S\n", lpServiceDescription->lpDescription); + dwError = RegSetValueExW(hServiceKey, + L"Description", + 0, + REG_SZ, + (LPBYTE)lpServiceDescription->lpDescription, + (wcslen(lpServiceDescription->lpDescription) + 1) * sizeof(WCHAR)); + } + } + else + { + dwError = ERROR_SUCCESS; } } else if (Info.dwInfoLevel == SERVICE_CONFIG_FAILURE_ACTIONS) -- 2.17.1