diff --git a/dlls/winspool/info.c b/dlls/winspool/info.c
index 2f8fa3111c9ceab6c1a735ce82b186cb78abdd09..f55e84f03d60a466bbe19a5fc0f1cbebc20dc84f 100644
--- a/dlls/winspool/info.c
+++ b/dlls/winspool/info.c
@@ -1034,9 +1034,12 @@ BOOL  WINAPI EnumPrintersA(
 	return FALSE;
     }
   
-    while(RegEnumKeyA(hkeyPrinters, number, NULL, 0) == ERROR_SUCCESS)
-        number++;
-
+    if(RegQueryInfoKeyA(hkeyPrinters, NULL, NULL, NULL, &number, NULL, NULL,
+			NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) {
+        RegCloseKey(hkeyPrinters);
+	ERR("Can't query Printers key\n");
+	return FALSE;
+    }
     TRACE("Found %ld printers\n", number);
 
     switch(dwLevel) {