Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Redes (https://www.clubdelphi.com/foros/forumdisplay.php?f=37)
-   -   ¿Como se puede iniciar un servicio en un equipo remoto? (https://www.clubdelphi.com/foros/showthread.php?t=74843)

JoAnCa 14-07-2011 15:42:31

¿Como se puede iniciar un servicio en un equipo remoto?
 
Hola a todos
Hola a todos
Sucede que necesito acceder a otros equipos en mi red para instalarle unas herramientas de seguridad (GFI Endpointsecurity) pero en algunos me deniega el acceso porque el servicio Registro Remoto está deshabilitado
La solución es activarlo y ponerlo en modo de inicio automatico

Existe alguna forma de hacerlo desde mi PC sin tener que ir a cada PC individualmente a activarlo?

Neftali [Germán.Estévez] 14-07-2011 17:10:11

Puedes iniciar y parar un servicio en otro equipo utiliando WMI. Para ello necesitas credenciales válidas de acceso.
Revisa ayuda sobre la clase Win32_Service

JoAnCa 14-07-2011 18:13:24

Cita:

Empezado por Neftali (Mensaje 406374)
Puedes iniciar y parar un servicio en otro equipo utiliando WMI. Para ello necesitas credenciales válidas de acceso.
Revisa ayuda sobre la clase Win32_Service

Gracias Neftali
Cierto, ya yo habia trabajado antes con las WMI pero para obtener datos del hardware, así que no debo tener problemas para implementar la clase Win32_Service

Una duda, yo lo use para leer datos, tambien se pueden modificar?

Veré si me sale bien :rolleyes:

JoAnCa 14-07-2011 19:31:40

Neftali Probe con las WMI, le asigno los valores para activar el servicio y no me da error, pero cuando reviso en la PC remota el servicio no esta activo

Parece que lo estoy haciendo mal, o me falta algo :confused:

Código Delphi [-]
 try
   rows:=MagWmiGetInfo(edtNombrePC.Text, 'root\CIMV2', 'Administ', '*****', 'Win32_Service', WmiResults, instances);
   if rows > 0 then
    begin
      for i:=1 to instances do
       begin
         for j:=1 to rows do
          begin
           if Pos('RemoteRegistry', WmiResults[i, j]) > 0 then
            begin
             WmiResults[i, 17]:='True';
             WmiResults[i, 18]:='Auto';
            end;
          end;
       end;
      // ShowMessage('Terminado Ok');
    end
   else
 finally
   WmiResults:=Nil;
 end;

Neftali [Germán.Estévez] 15-07-2011 10:54:57

Si descargas el paquete GLibWMI, entre las demos hay un ejemplo de utilización de servicios.
En este caso es sobre la máquina local, pero si cambias credenciales debe funcionar sobre otras máquinas.

En concreto el componente para la clase Win32_Service ya tiene implementados los métodos para Iniciar, parar, reanudar,... servicios.
Échale un vistazo a la demo y verás como ya está hecho.

NOTA: Si la demo de sercicios no está incluída en el paquete (creo recordar que sí) dímelo y te la envío.

JoAnCa 15-07-2011 18:51:20

Muchas gracias Neftali, ya tengo el ejemplo de los Servicios de las GLibWMI

Probaré como hacer para que funcione en una pc remota

JoAnCa 15-07-2011 20:51:36

Neftali
Disculpa tanta molestia, pero no encuentro donde poner las credenciales para acceder a otra PC en la red

Estuve revisando el ejemplo y el codigo fuente del componente pero no veo donde es que se pueden poner esos datos :confused:

Podrias ayudarme con eso? :rolleyes:

Neftali [Germán.Estévez] 18-07-2011 10:21:13

Mira el método de la unit Base:

Código Delphi [-]
  procedure TWMIBase.ConnectWMI();

Por ahora GLibWMI sólo funciona con el ordenador local, pero símplemente porque no he publicado las propiedades de acceso para modificar User y contraseña. Si miras ese método verás que están comentadas, basta con que hayas llegar a esas propiedades las credenciales que necesitas y listo.


La franja horaria es GMT +2. Ahora son las 12:36:23.

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