PDA

Ver la Versión Completa : Ejecutar un programa dependiendo del usuario de Win


Gelmin
25-04-2004, 16:33:15
:cool: Como estan estos programadores, necesito de su ayuda, espero me puedan colaborar en algo como hago para ejecutar un programa al momento de iniciar sesion dependiendo del usuario de Windows, ya se como iniciar un programa al momento de inicir sesion en Windows pero lo que necesito es que no en todas las sesiones de windows se ejecute el programa sino solamente cuando un determinado usuario inicie sesion, Administro una red con Windows 2000 Advanced Server y terminales con W2000 professional y algunas con W98SE, estube rebisando un poco los usuarios registrados en el servidor pero no encontre nada no se donde tengo que hacer algo para al momento de que ese usuario inicie sesion en una terminal se ejecute un determinado programa...espero me entiendan la pregunta un saludo y hasta luego Gelmin Martinez (Nicaragua)

jachguate
25-04-2004, 19:33:49
para discriminar que usuario está registrado en la máquina, podes valerte de la función GetUserName, de la que ya se ha hablado antes en los foros. (ej: http://www.clubdelphi.com/foros/showthread.php?t=3214&highlight=getusername)

Si no es el usuario para el que debes ejecutar tu programa, simplemente hace un close del form principal.

Hasta luego.

;)

delphi.com.ar
25-04-2004, 19:35:56
Tendrías que guardarlo en HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run*... la clave HKEY_CURRENT_USER se carga de un user.dat distinto para cada usuario si utilizas perfiles de usuarios

Saludos!

Gelmin
25-04-2004, 20:40:26
:rolleyes: Pues es una buena opción lo que dijo jachguate, vere si me sirve la idea....!

Delphi.com.ar creo que no entendi muy bien lo del usuario, se que el programa tengo que indicarlo en HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run*...
pero lo del usuario en la clave HKEY_CURRENT_USER no lo entendi, hablas de perfiles de usuarios pues yo en el servidor cree un usuario de prueba y le busque algo parecido a eso que tu dices pero no tube exito por ahi sale algo sobre ejecutar programa pero no se como es el rollo. un saludo y Gracias por su tiempo...! Gelmin Martinez(Nicaragua)

delphi.com.ar
26-04-2004, 03:56:25
Fui demasiado explícito, la historia es así: El registro de Windows, es la famosa "Base de Datos" donde se guardan todas las configuraciones del sistema, esta dividido en dos grupos, los registros del sistema y los registros de usuario. Los registros del sistema son los datos que pertenecen al sistema y todos los usuarios logueados en esa terminal pueden leerlos, los registros de usuario, si utilizas perfiles de usuario, se guardan en archivos diferentes para cada profile, entonces contiene personalizaciones diferentes, mismo esta “personalización” puede establecerse desde el servidor, y quedar guardada en el mismo para que cuando un usuario cambie de estación de trabajo, conserve su configuración de las herramientas. Para activar los perfiles de usuarios desde la estación, tienes que ir a Panel de Control \ Contraseñas \ Perfiles de Usuario, para hacerlo desde el servidor, es desde el User Manager, pero no recuerdo los pasos.

PD: jachguate, te me has adelantado en dos mensajes al mismo tiempo!!! :D (cuando lo escribí el tuyo no estaba)

Saludos!

jachguate
26-04-2004, 04:53:11
PD: jachguate, te me has adelantado en dos mensajes al mismo tiempo!!! :D (cuando lo escribí el tuyo no estaba)
:p últimamente me dicen el mas rápido del oeste... :D :D

Gelmin
27-04-2004, 17:21:57
Busque en "Usuarios y equipos de Active Directory" del w2000 Advanced Server lo de los perfiles de los usuarios para ver si encontraba algo sobre lo de ejecutar un programa cuando este usuario iniciara sesión en cualquier terminal. Seleccione un usuario me fui a sus propiedades y en la pestaña "Entorno" encontre algo que dice:

use esta ficha para configurar el entorno de inicio de servicios de terminal server. Esta configuración suplantara la especificada para cliente.

Iniciando programas:

Iniciar el programa siguiente al iniciar la sesion (Boton de Opcion)
Iniciar en:_______________________________
Nombre del Archivo de programas:________________________

pero no se si eso me servira, ahora no se que es lo que tengo que indicar en esos dos cajas de edicion, me parecia que era algo asi como inicar en:PC20 y en nombre del archivo de programas: //PC20//C:/Miapp/app.exe pero ya probe algo asi y me fui a la terminal que tiene el app.exe a iniciar sesion con la cuenta de ese usuario y no sucedio nada, no se si esto no sirve para eso o talves estoy haciendo algo mal...un saludo Gelmin Martinez(Nicaragua)

delphi.com.ar
27-04-2004, 17:32:55
Busque en "Usuarios y equipos de Active Directory" del w2000 Advanced Server lo de los perfiles de los usuarios para ver si encontraba algo sobre lo de ejecutar un programa cuando este usuario iniciara sesión en cualquier terminal.
No me has entendido, ahí no encotrarás una opción como "Ejecutar aplicaciones por Usuario", lo que lograrás es definir que cada usuario utilize un archivo de configuración diferente, y luego tendrías que setear en estos archivos de configuración (con el regedit), que ejecutarás al iniciar.

Saludos!

Gelmin
27-04-2004, 18:04:41
El usuario que quiero configurar pertenece a un dominio de la red me parece a mi que si quiero configurarle algo tengo que hacerlo desde el servidor donde se encuentran todos los usuarios del dominio que estan en Active Directory si quisiera hacerlo desde la terminal, en panel de control/constraseñas/opciones Avanzadas solo me aparecen los usuarios locales de la terminal porque tengo en las terminales w2000pro y yo quiero configurar un usuario que sera global osea pertenece a un dominio, creo que no lo puedo configurar desde cada una de las terminales o si?...veo que esto esta bastante complicado jejeje....un saludo Gelmin Martinez(Nicaragua) :)

Voutarks
30-04-2004, 14:38:50
A ver si te entiendo Gelmin.

Tu lo que quieres es que cuando un determinado usuario entre en el dominio desde cualquier equipo de la red se le ejecute o no un programa dependiendo de que usuario sea. ¿Correcto?

Porque si cada usuario solo se conecta desde su equipo eso seria mas facil que aprender a tocar las maracas :D

Voutarks
30-04-2004, 15:44:23
Suponiendo que me respondes afirmativamente a la pregunta anterior y un usuario no tiene ordenador fijo sino que puede entrar desde cualquiera lo que te propongo hacer es crear un programita siguiendo lo propuesto por jachguate.

Desde delphi has de crear una nueva aplicacion. Lo mejor es crearla del tipo Console Application . Una vez hecho esto sustituye todo el codigo por este:


program Usuarios;

uses
Windows, SysUtils, types;

function GetLoginName: string;
var
buffer: array[0..255] of char;
size: dword;
begin
size := 256;
if GetUserName(buffer, size) then
Result := buffer
else
Result := ''
end;

var nombre: string;

begin
nombre := GetLoginName;
if nombre = 'pepe' then
WinExec(PChar('c:\windows\notepad.exe'),SW_SHOWNORMAL);
end.


Como ves lo que hace el programita este es que si el usuario que ha iniciado sesion en la maquina se llama 'pepe' entonces iniciara el block de notas, en esta caso. Tu puedes poner la condicion que quieras para tus usuarios y poner la ruta correcta hacia la aplicacion en cuestion, que lo mas normal es que se encuentre en la misma ubicación en todos los ordenadores.

Este programa lo colocas en la carpeta inicio para todos los usuarios del equipo.

Seleccione un usuario me fui a sus propiedades y en la pestaña "Entorno" encontre algo que dice:

use esta ficha para configurar el entorno de inicio de servicios de terminal server. Esta configuración suplantara la especificada para cliente.

Esto es otra cosa: se trata del terminal server de microsoft. Sirve para abir sesiones graficas remotas, para autenticarse y ejecutar aplicaciones en el servidor, mostrandose sólo el resultado de la pantalla en el cliente,como los servidores y clientes X de los UNIX. Para utilizar esto hay que contratar licencias a microsoft, las cuales no salen nada baratas precisamente. Así que no tiene que ver con lo que estamos tratando.

Espero haberte ayudado.

Gelmin
30-04-2004, 23:18:40
Gracias por tu tiempo Voutarks, correcto...! exactamente lo que dijistes en tu primer mensaje es lo que yo necesito, es que yo pense que habia una forma de especificar a los usuarios de win Server que programa se ejecutaría en el momento de iniciar sesion en cualquier equipo, lo que estas diciendo es una buena idea, en los comentarios anteriores tambien me sugirieron algo asi, que obtubiera el usuario de Win y si no era el que me intereza pues que cerrara el form principal de mi programita, gracias por darme ideas de como puedo resolver eso, voy a resolverlo de esa manera....ahora ya tengo idea de como hacerlo....! un saludo y gracias a todos... Gelmin Martinez (Nicaragua)

davezf
05-04-2005, 20:23:14
Y para impedir que un usuario puede ejecutar un programa?