hola tengo un problema se hacer un editor de registro igual q al de windows esmas ya lo hice y mejor ajajj pero el problema es q no tengo idea de como hacer remotamente . con winsock es a lo q me refiero aplicacion cliente servidor
:-\
hola,
precisamente yo estoy tratando de hacer algo similar. Si ya tienes el programa hecho no te será muy difícil (lo digo yo que soy un novato javascript:void(0);).
lo que yo he hecho ha sido utilizar 3 winsock (para las instrucciones, envio de keys y envío de valores)
primero conecto los 3 winsock y la única pega es que el winsock que va a recibir la petición de conexión tiene que tener el index 0, y cuando recibe el connection_request hay que cargar el winsock(1) que será el que funcione.
cuando el winsock de instrucciones del server recibe una orden, por ejemplo "HKLM"
se ejecuta el api RegOpenKey(HKEY_LOCAL_MACHINE, "", handle_superior)
y seguido un bucle con el api RegEnumKeyEx(handle_superior, i, key_name, name_size, ByVal 0&, vbNullString, ByVal 0&, ByVal 0&) que mientras sea 0 mandará al cliente,de una en una, los nombres de las keys de HKLM, por el winsock de keys mediante la instrucción winsock_keys.senddata key_name y según se reciben se llevan a un listbox
cuando en el server, se reciben datos por el winsock de keys, será la subey que se quiere explorar del handle abierto anterior, se ejecutaría en el server
RegOpenKey(handle_superior, subkey, handle1) para abrir la nueva subkey
handle_superior = handle1 para la siguiente key que abramos
y de nuevo un bucle con RegEnumKeyEx que se enviaría por winsock_key
y además otro bucle con RegEnumValue que se enviaría por winsock_value y en el cliente se añadiría a otro listbox
para otras instrucciones como borrar claves, crear nuevos valores y demás, habría que o bien meter más winsocks o jugar con las cadenas que se envían, por ejemplo yo envío junto a cada valor su data y su tipo, y después la separo en el cliente.
No sé si te habrá sido de ayuda, leyendo de nuevo el royo que he escrito, la verdad es que ni yo me entero javascript:void(0); , pero la idea es enviar desde el cliente una orden al servidor (winsock_cliente.senddata orden), recoger la orden en el servidor (winsock_servidor.getdata orden),analizar la orden en el servidor (if orden=...then), ejecutar la orden, devolver la salida (winsock_servidor.senddata salida) y recogerla en el cliente (winsock_cliente.getdata salida)
yo hice todo eso con un winsock pero cuando quiero obtener todas las ramas del registro y pasarlas a un listviev no me sale
hola otra vez,
se me ocurre que cuando intentas mandar todas las ramas del registro, una tras otra, el winsock puede saturarse.
Yo uso un procedimiento que encontré por algún foro (creo que hacían un explorador de archivos remoto) del que no recuedo el nombre del autor.
Private Sub pausa() 'por un tema de velocidad ya que nuestro micro
'es màs ràpido que nuestra conexiòn crearemos
Dim comenzar 'un Procedimiento que hara pausas entre envio y envio,
Dim controlar 'asi no atora a Winsock
comenzar = Timer
Do Until controlar >= comenzar + 0.01
controlar = Timer
DoEvents
Loop
End Sub
Llamando a este procedimiento en el server, tras la instrucción winsock.sendddata (call pausa), a mi me envía correctamente todas las ramas.
Espero que te sirva. Un saludo.
P.D. Repito que el código no es mío, lo encontré por ahí y siento no recordar el nombre del autor para ponerlo.