diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 82701e4579009cb4c7be546a990bb4075ac7592b..ce41fd7e2ed8559b584b443a675350aea10f03c0 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -89,11 +89,10 @@ StartServiceCtrlDispatcherA( LPSERVICE_TABLE_ENTRYA servent )
     int i;
 
     TRACE("(%p)\n", servent);
-    wait = OpenSemaphoreW(SEMAPHORE_ALL_ACCESS, FALSE, _ServiceStartDataW);
-    if(wait == 0)
+    wait = CreateSemaphoreW(NULL,1,1,_ServiceStartDataW);
+    if (!wait)
     {
-        ERR("Couldn't find wait semaphore\n");
-        ERR("perhaps you need to start services using StartService\n");
+        ERR("Couldn't create data semaphore\n");
         return FALSE;
     }