Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
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
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #2  
Antiguo 23-07-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Se me olvidaba, trabajo con windows xp en todas las máquinas
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #3  
Antiguo 23-07-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.

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...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 23-07-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
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
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #5  
Antiguo 23-07-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 23-07-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
...O que pertenezca a los administradores definidos para el dominio al que pertenecen dichas maquinas
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #7  
Antiguo 26-07-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
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
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #8  
Antiguo 26-07-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
Supongo que con el usuario activo de la maquina en el que corras el programa en delphi.
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
  #9  
Antiguo 26-07-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
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?
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #10  
Antiguo 26-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 26-07-2004
Avatar de __hector
[__hector] __hector is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 1.075
Poder: 22
__hector Va por buen camino
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$
__________________
Héctor Geraldino
Software Engineer
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:16:09.


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
Copyright 1996-2007 Club Delphi