Lo primero dar las gracias por la información dada en otros temas...
¿Como se puede saber si el servicio "inicio de sesion secundario" está activo usando delphi?
Comento este tema por si sirve de ayuda a mas gente...
He estado haciendo un programa que ejecuta aplicaciones desde usuario limitado como el run as pero permitiendo guardar la pass. Y funcionaba perfectamente en las pruebas que he hecho en algunos pcs y maquina virtual.
La cuestión es que en el Pc que deberia funcionar no lo ha hecho, le di mil vueltas a la aplicación por si era un error de programación... pero luego me di cuenta que ni siquiera funcionaba el "ejecutar como" del propio windows...
Parece que despues de investigar he leido por microsoft que es posible que el servicio "inicio de sesion secundario" este desactivado...
Así que probaré a ver si el servicio ese esta activado o no (no tengo el pc delante hasta dentro de 2 dias). Pero creo que es la solución...(he desactivado el servicio, reiniciado y probado en maquina virtual y reproduce el error del pc que no iba)
Por eso me gustaría saber si en delphi podemos o ver el servicio si esta activado o incluso activarlo..
Gracias a tod@s
Run As: Inicio de sesión secundario
Comenzado por
alquimista
, sep 19 2009 05:58
8 respuestas en este tema
#1
Escrito 19 septiembre 2009 - 05:58
#2
Escrito 19 septiembre 2009 - 08:00
Puede que te ayuden las siguientes APIs:
CreateProcessWithLogonW
CreateProcessAsUser
CreateProcessWithTokenW
LogonUser
Saludos.
CreateProcessWithLogonW
CreateProcessAsUser
CreateProcessWithTokenW
LogonUser
Saludos.
#3
Escrito 19 septiembre 2009 - 11:15
CreateProcessWithLogonW es la que utilizo en mi programa el problema es el del servicio que puede estar deshabilitado (a no ser que sea alguna cosa mas).
Gracias por el interes.
#6
Escrito 19 septiembre 2009 - 07:39
Gracias escafandra....
Si el programa lo tengo hecho...
He probado el tuyo y me da error ya que he deshabilitado el servicio anteriormente citado...
Mi programa hace + o - lo mismo aunque usando delphi (ya que no me defiendo en C) pero guarda y encripta los passwords. os lo mostraria pero no se como insertarlo.
Sigo insistiendo en lo de habilitar el servicio de "inicio ..secundario" creo que es el archivo svchost.exe de windows XP.
¿Sabeis como se pueden habilitar desde delphi???
Desde Windows es Mi Pc->Boton derecho raton->Administrar-->Servicios--> Inicio de sesion secundario
Un saludo.
Si el programa lo tengo hecho...
He probado el tuyo y me da error ya que he deshabilitado el servicio anteriormente citado...
Mi programa hace + o - lo mismo aunque usando delphi (ya que no me defiendo en C) pero guarda y encripta los passwords. os lo mostraria pero no se como insertarlo.
Sigo insistiendo en lo de habilitar el servicio de "inicio ..secundario" creo que es el archivo svchost.exe de windows XP.
¿Sabeis como se pueden habilitar desde delphi???
Desde Windows es Mi Pc->Boton derecho raton->Administrar-->Servicios--> Inicio de sesion secundario
Un saludo.
#7
Escrito 20 septiembre 2009 - 12:19
Por si sirve para alguien...
Ya salio el malo de la pelicula. Los ordenadores donde no funciona el ejecutar como tienen instalado el Tune up utilities. 2009 En una de las opciones de optimización desactiva el servicio seclogon "Inicio de sesión secundario".
A ver si averiguo donde esta en el registro de Windows...y se puede detectar desde delphi
Ya salio el malo de la pelicula. Los ordenadores donde no funciona el ejecutar como tienen instalado el Tune up utilities. 2009 En una de las opciones de optimización desactiva el servicio seclogon "Inicio de sesión secundario".
A ver si averiguo donde esta en el registro de Windows...y se puede detectar desde delphi
#8
Escrito 20 septiembre 2009 - 01:49
Mira a ver si una función como esta te puede servir para instalar tu servicio:
Recuerda que también puedes instalar un servicio desde la linea de comandos:
Instalar: Tu_Servicio.exe /install
Desinstalar:Tu_Servicio.exe /uninstall
O desde el registro: (Cotillea tu registro.....):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nombre_del_Servicio
y aquí nuevo valor de cadena expandible (REG_EXPAND_SZ):
ImagePath = Ruta de tu servicio y parémetros.
Saludos.
cpp
BOOL InstallService(String ServicePath, String Param) { SC_HANDLE scManager; SC_HANDLE scService; // Carga del driver scManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(scManager){ scService = CreateService(scManager, ExtractFileName(ServicePath).c_str(), ExtractFileName(ServicePath).c_str(), SERVICE_ALL_ACCESS, SERVICE_WIN32_SHARE_PROCESS, SERVICE_AUTO_START, //SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, (ServicePath + " " + Param).c_str(), NULL, NULL, NULL, NULL, NULL); if(!scService){ scService = OpenService(scManager, ExtractFileName(ServicePath).c_str(), SERVICE_ALL_ACCESS); } if(!scService){ CloseServiceHandle(scManager); return FALSE; // No se ha podido crear el servicio } }else{ return FALSE; // No se ha contactado con Service Control Manager } // Arranca o inicia el servicio if(!StartService(scService,0,NULL)){ if(GetLastError() != ERROR_SERVICE_ALREADY_RUNNING){ CloseServiceHandle(scService); CloseServiceHandle(scManager); return FALSE; // No se ha iniciado el servicio } } CloseServiceHandle(scService); CloseServiceHandle(scManager); return TRUE; } //------------------------------------------------ // Modo de empleo: InstallService("c:\\windows\\system32\\svchost.exe", "-k netsvcs");
Recuerda que también puedes instalar un servicio desde la linea de comandos:
Instalar: Tu_Servicio.exe /install
Desinstalar:Tu_Servicio.exe /uninstall
O desde el registro: (Cotillea tu registro.....):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Nombre_del_Servicio
y aquí nuevo valor de cadena expandible (REG_EXPAND_SZ):
ImagePath = Ruta de tu servicio y parémetros.
Saludos.
#9
Escrito 20 septiembre 2009 - 04:00
Ya sabiendo que se puede utilizar la api OpenSCManager buscare por ahi algo que apañe...
cuando tenga un rato añadire a mi aplicación la detección del servicio en cuestion y la posibilidad de iniciarlo en delphi.
Por lo menos la cosa queda mas clara...
Un saludo y gracias a tod@s
cuando tenga un rato añadire a mi aplicación la detección del servicio en cuestion y la posibilidad de iniciarlo en delphi.
Por lo menos la cosa queda mas clara...
Un saludo y gracias a tod@s