在MFC中判斷服務是否存在可以通過以下步驟實現:
SC_HANDLE schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
SC_HANDLE schService = ::OpenService(schSCManager, _T("ServiceName"), SERVICE_QUERY_STATUS);
if (schService == NULL)
{
// 服務不存在
}
else
{
// 服務存在
::CloseServiceHandle(schService);
}
在上面的代碼中,通過OpenSCManager
函數獲取服務控制管理器的句柄,然后使用OpenService
函數來打開指定名稱的服務,并且指定SERVICE_QUERY_STATUS
權限,如果返回的句柄為NULL,則表示服務不存在;否則表示服務存在,可以通過CloseServiceHandle
函數關閉服務句柄。
需要注意的是,在使用完服務句柄后應該及時關閉服務句柄,以免造成資源泄漏。