Compruebe si un servicio está instalado usando C
Estoy escribiendo una aplicación C que crea un servicio de Windows. Me gustaría verificar si el servicio está instalado antes de intentar llamar a la función de instalación, pero no puedo encontrar la manera de verificarlo.
He escrito el código anterior para probar:
DWORD InstallMyService()
{
char strDir[1024 + 1];
SC_HANDLE schSCManager;
SC_HANDLE schService;
LPCTSTR lpszBinaryPathName;
if (GetCurrentDirectory(1024, strDir) == 0)
{
aff_error("GetCurrentDirectory");
return FALSE;
}
strcat(strDir, "\\"MY_SERVICE_BIN_NAME);
if ((schSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS)) == NULL)
{
printf("Error OpenSCManager : %d\n", GetLastError());
return FALSE;
}
lpszBinaryPathName = strDir;
schService = CreateService(schSCManager, MY_SERVICE_NAME, MY_SERVICE_DESCRIPTOR,
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
lpszBinaryPathName, NULL, NULL, NULL, NULL, NULL);
if (schService == NULL)
{
printf("Error CreateService : %d\n", GetLastError());
return FALSE;
}
CloseServiceHandle(schService);
return TRUE;
}
Pero este código no detecta si el servicio aún existe o no. ¿Alguien tiene una idea de qué función llamar? Encontré muchas publicaciones hablando de esto, pero no en C, solo en C # o VB.
Gracias