\r
/* FUNCTIONS *****************************************************************/\r
\r
+\r
+DWORD\r
+ScmOpenServiceKey(LPWSTR lpServiceName,\r
+ REGSAM samDesired,\r
+ PHKEY phKey)\r
+{\r
+ HKEY hServicesKey = NULL;\r
+ DWORD dwError;\r
+\r
+ *phKey = NULL;\r
+\r
+ dwError = RegOpenKeyExW(HKEY_LOCAL_MACHINE,\r
+ L"System\\CurrentControlSet\\Services",\r
+ 0,\r
+ KEY_READ,\r
+ &hServicesKey);\r
+ if (dwError != ERROR_SUCCESS)\r
+ return dwError;\r
+\r
+ dwError = RegOpenKeyExW(hServicesKey,\r
+ lpServiceName,\r
+ 0,\r
+ samDesired,\r
+ phKey);\r
+\r
+ RegCloseKey(hServicesKey);\r
+\r
+ return dwError;\r
+}\r
+\r
+\r
DWORD\r
ScmWriteDependencies(HKEY hServiceKey,\r
LPWSTR lpDependencies,\r
DWORD
ScmMarkServiceForDelete(PSERVICE pService)
{
- DPRINT1("ScmMarkServiceForDelete() called\n");
+ HKEY hServiceKey = NULL;
+ DWORD dwValue = 1;
+ DWORD dwError;
- return ERROR_SUCCESS;
+ DPRINT("ScmMarkServiceForDelete() called\n");
+
+ dwError = ScmOpenServiceKey(pService->lpServiceName,
+ KEY_WRITE,
+ &hServiceKey);
+ if (dwError != ERROR_SUCCESS)
+ return dwError;
+
+ dwError = RegSetValueExW(hServiceKey,
+ L"DeleteFlag",
+ 0,
+ REG_DWORD,
+ (LPBYTE)&dwValue,
+ sizeof(DWORD));
+
+ RegCloseKey(hServiceKey);
+
+ return dwError;
}
/* EOF */
/* config.c */
+DWORD ScmOpenServiceKey(LPWSTR lpServiceName,
+ REGSAM samDesired,
+ PHKEY phKey);
+
DWORD ScmWriteDependencies(HKEY hServiceKey,
LPWSTR lpDependencies,
DWORD dwDependenciesLength);