Hola!
Prueba con este código, solo he cambiado tu codigo en "
registro.asp", básicamente para cambiar las operaciones de Recordset por SQL puro y duro. A mi siempre me ha dado menos problemas manejarlo directamente, y se pueden hacer virguerías...

El los métodos del recordset pienso que están bien pero para hacer 4 cosas basicas...

En serio, prueba a ver si asi te salta el error de apertura de la base de datos (Te pongo el código tal cual a continuación):
<% if request.form <> "" then
dim nombre, apellido, dni, ciudad, email, saludo
nombre = Request.form("nombre")
apellido = Request.form("apellido")
dni = Request.form("dni")
ciudad = Request.form("ciudad")
email = Request.form("email")
saludo = Request.form("saludo")
%>
<html>
<head>
<title>Registro</title>
</head>
<body>
<%
dim Conexion, Rs, Rs1, SQL
Set Conexion = Server.CreateObject("ADODB.Connection")
Conexion.ConnectionString= "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("cumple1.mdb") + ";"
Conexion.open
SQL = "Select * from Participantes where dni='" & dni & "'"
Set Rs = Conexion.Execute(SQL)
If Rs.EOF Then
'No hay nadie registrado con ese dni
SQL = "INSERT INTO Participantes (nombre, apellido, dni, ciudad, email, saludo) VALUES " & _
"('" & nombre & "','" & apellido & "','" & dni & "','" & ciudad & "','" & email & "','" & saludo & "')"
Conexion.Execute SQL
Rs.close
Conexion.close
set Rs = nothing
set Conexion = nothing
Response.redirect "registroOk.html"
else
'El participante ya existe
Rs.close
Conexion.close
set Rs = nothing
set Conexion = nothing
Response.redirect "registroCancelado.html"
End If
%>
</body>
</html>
<% End If %>
Nada, ya contarás que tal...
saludos = saludos + 1