Hola a todos.
Estoy realizando una aplicación de control de acceso para un Pc con XP SP2 donde el usuario que tiene que acceder tiene un perfil limitado (con pocos permisos). Para que la aplicación pudiera escribir en disco le tuve que dar privilegios de administrador con la función
CreateProcessWithLogonW de la siguiente forma:
Código Delphi
[-]
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar (StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
Win32Check( CreateProcessWithLogonW( StringToOleStr('UsuarioConPermisos'),StringToOleStr ('Dominio'),
StringToOleStr('Password'),0, StringToOleStr('Exe'), nil, 0, nil, StringToOleStr('DirectorioTrabajo'),
StartupInfo, ProcessInfo ) );
end;
En este enlace se define la función
CreateProcessWithLogonW:
http://msdn.microsoft.com/library/de...withlogonw.asp
De esta forma la aplicación puede escribir en disco con toda libertad mientras que el usuario no.
Pues bien a partir de ese momento la función:
ExitWindowsEx(EWX_FORCE,0); que utilizaba para cerrar la sesión cuando el tiempo de acceso al sistema se ha sobrepasado dejó de funcionar . Lo único que hace es cerrar la aplicación pero el Pc no hace un logoff.
He probado todas la formas que conozco para cerrar la sesión y no lo consigo.
Gracias de antemano.