Windows Win32Serviçosadvapi32.dll
CreateServiceW
Registra um novo serviço no banco de dados do Service Control Manager.
Descrição
Define como e quando o serviço é iniciado (SERVICE_AUTO_START, SERVICE_DEMAND_START), seu executável, e a conta sob a qual roda — análogo a instalar uma unit file do systemd no Linux.
Header:
winsvc.hDLL: advapi32.dllAssinatura
SC_HANDLE CreateServiceW(
SC_HANDLE hSCManager,
LPCWSTR lpServiceName,
LPCWSTR lpDisplayName,
DWORD dwDesiredAccess,
DWORD dwServiceType,
DWORD dwStartType,
DWORD dwErrorControl,
LPCWSTR lpBinaryPathName,
LPCWSTR lpLoadOrderGroup,
LPDWORD lpdwTagId,
LPCWSTR lpDependencies,
LPCWSTR lpServiceStartName,
LPCWSTR lpPassword
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| hSCManager | SC_HANDLE | Handle do SCM, aberto com SC_MANAGER_CREATE_SERVICE. |
| lpServiceName | LPCWSTR | Nome interno do serviço. |
| lpDisplayName | LPCWSTR | Nome exibido ao usuário. |
| dwDesiredAccess | DWORD | Direitos de acesso desejados sobre o serviço criado. |
| dwServiceType | DWORD | SERVICE_WIN32_OWN_PROCESS, SERVICE_KERNEL_DRIVER, etc. |
| dwStartType | DWORD | SERVICE_AUTO_START, SERVICE_DEMAND_START, SERVICE_DISABLED. |
| dwErrorControl | DWORD | Como o sistema reage se o serviço falhar ao iniciar. |
| lpBinaryPathName | LPCWSTR | Caminho do executável do serviço. |
| lpLoadOrderGroup | LPCWSTR | Grupo de ordem de carregamento, ou NULL. |
| lpdwTagId | LPDWORD | Recebe uma tag de ordenação dentro do grupo, se solicitado. |
| lpDependencies | LPCWSTR | Lista de serviços dos quais este depende. |
| lpServiceStartName | LPCWSTR | Conta sob a qual o serviço roda, ou NULL para LocalSystem. |
| lpPassword | LPCWSTR | Senha da conta, se aplicável. |
Valor de retorno
Um handle para o novo serviço em sucesso; NULL em erro (consulte GetLastError).
Códigos de erro (GetLastError)
- ERROR_ACCESS_DENIED(5)
- Acesso negado.
- ERROR_SERVICE_EXISTS(1073)
- O serviço já existe no banco de dados do Service Control Manager.
- ERROR_INVALID_PARAMETER(87)
- Parâmetro incorreto.