Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Apagar ordenador remoto (https://www.clubdelphi.com/foros/showthread.php?t=12658)

Novás 23-07-2004 09:45:17

Apagar ordenador remoto
 
Hola a todos...

He hechado un vistacillo por los foros y no he encontrado nada al respecto. Vereis...

Estoy intentando que, desde una aplicación delphi en mi ordenador pueda apagar un ordenador de la red solo conociendo su ip, o nombre de equipo. Además me gustaría que en este ordenador no tubiese que instalar ningún tipo de aplicación cliente ni nada por el estilo...

Es posible??. Muchas gracias por adelantado

Novás 23-07-2004 09:46:17

Se me olvidaba, trabajo con windows xp en todas las máquinas

Neftali [Germán.Estévez] 23-07-2004 11:08:06

Cita:

Empezado por Novás
Estoy intentando que, desde una aplicación delphi en mi ordenador pueda apagar un ordenador de la red solo conociendo su ip, o nombre de equipo. Además me gustaría que en este ordenador no tubiese que instalar ningún tipo de aplicación cliente ni nada por el estilo

Como mínimo deberás añadir a la lista de cosas que conoces del equipo un password de usuario para una cuenta válida en ese ordenador, sino creo que no tienes nada que hacer. :confused:

Puedes revisar esta API:

InitiateSystemShutdown

que te permite hacer eso sobreuna computadora de la red, pero al final te explica lo siguiente:

//-------------------------------------------------------------------
Remarks
To shut down the local computer, the calling process must have the SE_SHUTDOWN_NAME privilege. To shut down a remote computer, the calling process must have the SE_REMOTE_SHUTDOWN_NAME privilege on the remote computer. By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers.
//-------------------------------------------------------------------

Vamos, que si no tienes permisos, no tienes nada que hacer...;)

Novás 23-07-2004 11:39:03

Otra preguntilla, como puedo darle esos privilegios en la otra máquina...

Soy un tanto amater y no tengo ni idea. También agradecería un ejemplillo del uso de la función.

Muchas gracias

Neftali [Germán.Estévez] 23-07-2004 12:37:37

Cita:

Empezado por Novás
Otra preguntilla, como puedo darle esos privilegios en la otra máquina...

No se trata de darle privilegios, se trata de que la cuenta de usuario que conoces en la otra máquina los tenga.
Es decir (y en esto que me corrija alguna otra persona si me equivoco), para hacer un "Remote shutdown" necesitas la IP de la otra máquina, un nombre de usuario definido en la otra máquina (entre las cuentas de usuario) y además ese usuario debe tener permisos de Administrador.

Si lo que quieres es darle permisos de Administrador a un usuario que no los tiene, lo que necesitas es conocer un usuario con permisos de Administrador, para darle los permisos de Admnistrador al usuario que no los tiene con el usuario que sí los tiene...;) ...no se si te has dado cuenta que siempre llegamos al mismo sitio.

Un saludo.

__hector 23-07-2004 15:03:23

...O que pertenezca a los administradores definidos para el dominio al que pertenecen dichas maquinas

Novás 26-07-2004 11:28:57

Hola de nuevo:

Veréis, estoy utilizando el siguiente código:
Código Delphi [-]
nombre:=InputBox('Intentar apagar equipo...','Introduzca el nombre o la dirección IP '+
                   'de la máquina que desea apagar','');
  if nombre<>'' then
  begin
    sms:=InputBox('Mensaje al apagar equipo...','Introduzca el mensaje que desea que '+
                  'visualice el ordenador remoto.','');
    if InitiateSystemShutdown(PChar(nombre),
                              PChar(sms),
                              4,
                              True,
                              False)=False then
    begin
      MessageDlg('No se ha apagado la máquina...'+#13+'Error: '+
                    SysErrorMessage( GetlastError ),
                 mtInformation,
                 [mbOk],
                 0);
    end;
  end;

Este código, cuando le asigno los privilegios de apagar el ordenador de forma remota al grupo todos me funciona, sino no funciona.
Mi pregunta es... ¿Con que usuario se conecta el programa al ejecutar esta función? ¿Con el usuario activo en la máquina destino? ¿Con el usuario activo en mi máquina? ¿Con otro usuario distinto?... ¿Como puedo lograr que mi programa se conecte como administrador en la máquina remota conociendo el password?

Muchas gracias por adelantado

__hector 26-07-2004 14:51:57

Supongo que con el usuario activo de la maquina en el que corras el programa en delphi.

Novás 26-07-2004 15:55:07

He probado a intentar apagar un equipo en forma remota utilizando yo la cuenta de adminstrador y el programa me devuelve el error de acceso denegado. Mientras que en la máquina remota el usuario administrador tiene permisos para apagar el ordenador en forma remota...
Por lo cual deduzco que esa suposición es incorrecta, yo creo que realmente el programa manda la orden y es el usuario que esté en ejecución en la máquina remota el que procesa el mensaje.
Lo interesante sería lograr que la orden que yo mando desde mi puesto el ordenador remoto la reconociese como si fuese una orden del administrador...pero...

¿Como envío la orden de apagado a un equipo remoto para que este la reconozca como
que debe ejecutarla como administrador del sistema?

jachguate 26-07-2004 16:16:18

Cita:

Empezado por Novás
yo creo que realmente el programa manda la orden y es el usuario que esté en ejecución en la máquina remota el que procesa el mensaje.

Esto no tiene sentido, ya que entonces un usuario cualquiera podria apagar la máquina remota cuando el administrador la está usando, y en cambio, el administrador no podria hacerlo si quien está frente a ella es un usuario cualquiera.

Hasta luego.

;)

__hector 26-07-2004 22:29:54

Me parece muy bonito que quieras lograr esto con delphi. Windows (XP al menos) te permite ejecutar un programa como otro usuario (click derecho, run as), prueba ejecutar el programa con la cuenta del administrador de dominio, o con la cuenta administrator de la maquina que quieres apagar.

Ahora bien, si quieres algo practico, te recomiendo que pruebes las pstools, herramientas de lineas de comando que te permiten, entre otras cosas, apagar remotamente maquinas en redes M$


La franja horaria es GMT +2. Ahora son las 04:40:00.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi