diff --git a/dlls/advapi32/tests/crypt.c b/dlls/advapi32/tests/crypt.c
index 5a5b26e004fa4aa4e54d7a0c2e1a4f007969e1d9..41759d5b9b9051596274e5d6ac5b9e343ad6641b 100644
--- a/dlls/advapi32/tests/crypt.c
+++ b/dlls/advapi32/tests/crypt.c
@@ -870,12 +870,13 @@ static void test_set_provider_ex(void)
 	/* remove the default provider and then set it to MS_DEF_PROV/PROV_RSA_FULL */
         SetLastError(0xdeadbeef);
 	result = pCryptSetProviderExA(MS_DEF_PROV, PROV_RSA_FULL, NULL, CRYPT_MACHINE_DEFAULT | CRYPT_DELETE_DEFAULT);
-	if (!result && (GetLastError() == ERROR_ACCESS_DENIED))
+	if (!result)
 	{
+                ok( GetLastError() == ERROR_ACCESS_DENIED || broken(GetLastError() == ERROR_INVALID_PARAMETER),
+                    "wrong error %u\n", GetLastError() );
 		skip("Not enough rights to remove the default provider\n");
 		return;
 	}
-	ok(result, "%d\n", GetLastError());
 
 	result = pCryptSetProviderExA(MS_DEF_PROV, PROV_RSA_FULL, NULL, CRYPT_MACHINE_DEFAULT);
 	ok(result, "%d\n", GetLastError());