Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Permisos para acceder a BD en Paradox (https://www.clubdelphi.com/foros/showthread.php?t=35837)

quali 21-09-2006 20:30:09

Permisos para acceder a BD en Paradox
 
Hola todos.
Estoy desarrollando una aplicación que debe leer datos de una tabla Paradox que se encuentra en una maquina corriendo Windows 98. Esta maquina comparte su disco con protección con contraseña. Cuando ejecuto la aplicación, al intentar acceder a las tablas remotas, obtengo una excepción que me informa que tengo 'permiso denegado'.

Desde el explorador de la maquina en donde ejecuto la aplicación entro al entorno de red, selecciono la maquina que tiene la base de datos, accedo al recurso compartido e ingreso la clave de acceso. Luego vuelvo a ejecutar la aplicación y funciona correctamente. Evidentemente el problema es que necesito pasarle la password al recurso compartido para poder accederlo.
Alguien sabe como puedo hacer eso en tiempo de ejecución?
O sea, que la aplicación se loguee en un recurso compartido protegido por contraseña en W98.
Estoy desarrollando con Delphi y la aplicacion debe correr en windows XP o Windows server 2003
Desde ya agradezco cualquier ayuda.

marcoszorrilla 21-09-2006 21:23:31

Tengo esta información, creo recordar haber hecho alguna prueba y que funcionaba correctamente, ya nos dirás como te va.

Código Delphi [-]
utilice una funcion de la api de Windows que oi mencionar aqui en el foro, la cosa esta en iniciar
una conexion con la carpeta compartida psandole un nombre de usuario y una contraseña, en
Win9x no importa el nombre de usuario solo la contraseña de la carpeta, mientras que en Windows
Nt y 2000 tienes que pasarle un usuario valido y el password del usuario no de la carpeta. el codigo
es mas o menos asi
 
function TDModulo.ConectaRed: boolean;
var
   RecursoRed: _NETRESOURCE;
   Resultado: Word;
begin
   Resultado := NO_ERROR;
   Conectado := false;
 
   with RecursoRed do
   begin
      dwType := RESOURCETYPE_DISK;
      LpLocalName := nil;
      LpRemoteName := Pchar(DirServer);  // dirserver podria ser  "\\maquina\carpeta"
      LpProvider := nil;
   end;
 
   // --------------- nos conectamos al directorio ------------------
   Resultado := WNetAddConnection2(
      RecursoRed, // points to structure that specifies connection details
      PChar(Contrasenia), // points to password string
      PChar(Usuario), // points to user name string
      CONNECT_UPDATE_PROFILE // set of bit flags that specify connection options
      );
 
   // --------------------------------------- ya que te conectaste al directorio inicias la sesion de paradox
---------------------------------
   try
      if not Resultado in [NO_ERROR, ERROR_ALREADY_ASSIGNED] then
         raise EInvalidOperation.Create('');
 
      with Sesion do begin
         NetFileDir := DirServer + '\NET';
         PrivateDir := ObtenWindowsTemp;
      end;
 
      with DataBase do begin
         Params.Clear;
         Params.Add('PATH=' + DirServer);
         Params.Add('DEFAULT DRIVER=PARADOX');
         Params.Add('ENABLE BCD=FALSE');
         Connected := true;
      end;
      Conectado := true;
   except
      ShowMessage('No se ha podido establecer una sesion en red para el sistema' + #13 +
         'posiblemente el servidor no este funcionando en este momento o' + #13 +
         'existe un error en la configuracion, por favor verifique y vuelva a intentar.');
      Conectado := False;
   end;
   Result := Conectado;
end;
 
esto es obviamente al momento de crear tu Datamodulo (supongo que utilizaras uno) o en el
momento de abrir tu base de datos.

Un Saludo.

quali 04-10-2006 15:05:10

Marcos, crei haber respondido al otro dia que pusiste tu mensaje, pero por lo visto no lo hice.
Lo que me pasaste anduvo perfecto.

Muchas gracias

marcoszorrilla 04-10-2006 15:18:46

Hubo un problema en el Foro y se perdieron algunos mensajes, pero recuerdo haber leido tu respuesta favorable.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 11:39:38.

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