Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-03-2009
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Hola Gustavo, te lo puse para que lo ejecutaras desde la linea de comandos, pero desde delphi, yo hago esto:
Código Delphi [-]
ShellExecute_AndWait(
    PChar(ExtractFilePath(GetIBServerDataBase)+'bin\gsec.exe'),
    PChar('-USER SYSDBA -PASSWORD '+DatosSesion.Password+
    ' -modify '+Nombre+' -pw '+Clave),
    PChar(ExtractFilePath(GetIBServerDataBase)+'bin'));
// Con esta funcion, averigüo la ruta donde está el gsec.exe
// mirando en el registro de windows las distintas claves, según el motor y // version del mismo
Código Delphi [-]
function GetIBServerDataBase:string;
var Reg:TRegistry;
    FbsecuriyFile, FbsecuriyFile2, FbISC4: String;
begin
  Reg:=TRegistry.create;
  try
    Reg.Access:=KEY_READ;
    Reg.RootKey:=HKEY_LOCAL_MACHINE;
    if Not reg.OpenKey('SOFTWARE\Firebird Project\Firebird Server\Instances',false)
    then begin
      if Not reg.OpenKey('Software\FireBirdSQL\FireBird\CurrentVersion',false)
      then if Not reg.OpenKey('Software\Borland\InterBase\CurrentVersion',false)
           then if Not reg.OpenKey('Software\InterBase Corp\InterBase\CurrentVersion',false)
                then Raise Exception.Create('Interbase no está instalado en este equipo');
      FbsecuriyFile:=reg.ReadString('RootDirectory');
    end
    else begin
      FbsecuriyFile:=reg.ReadString('DefaultInstance');
    end;
    if Length(FbsecuriyFile)<=0
    then Raise Exception.create('Interbase no está instalado en este equipo');

    if FbsecuriyFile[length(FbsecuriyFile)]='\'
    then FbsecuriyFile:=Copy(FbsecuriyFile,1,Length(FbsecuriyFile)-1);
    FbISC4 := FbsecuriyFile + '\isc4.gdb';
    FbsecuriyFile2 := FbsecuriyFile + '\security2.fdb';
    FbsecuriyFile := FbsecuriyFile + '\security.fdb';
    if FileExists(FbsecuriyFile2)
    then Result := FbsecuriyFile2
    else if FileExists(FbsecuriyFile)
         then Result := FbsecuriyFile
         else if FileExists(FbISC4)
              then Result := FbISC4
              else Result := InputBox('No se encuentró la B.D. de USUARIOS de InterBase/FireBird.',
                                      'Teclee la ruta completa del fichero "security2.fdb", "security.fdb" o "isc4.gdb"',
                                      'C:\Archivos de programa\Firebird\FireBird_2_0\security2.fdb');
  finally
    Reg.free;
  end;
end;
// este procedimiento ejecuta un programa externo
Código Delphi [-]
procedure ShellExecute_AndWait(const FileName, Params, RutaDirectorio: string);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize       := SizeOf(exInfo);
    fMask        := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd          := GetActiveWindow();
    lpVerb       := 'open';
    lpParameters := PChar(Params);
    lpFile       := PChar(FileName);
    lpDirectory  := PChar(RutaDirectorio);
    nShow        := SW_HIDE; //SW_SHOWNORMAL;
  end;
  if ShellExecuteEx(@exInfo)
  then Ph := exInfo.HProcess
  else begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #2  
Antiguo 06-03-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Hola defcon1_es, tu sabras disculpar mi torpeza pero resulta que aún no logro dar con el asunto...

No sé para qué utilizas la función GetIBServerDataBase?
y tampoco sé cuál es el programa externo que ejecutas y para qué lo haces?
en cuanto a la sentencia para dar de alta al nuevo usuario, es error que me mostraba al principio era por separar los guiones, lo hice sin separar y me mostró este resultado:

"invalid switch specified in interactive mode"

la línea la escribí así: "USER SYSDBA -PASSWORD masterkey -add gustavo -pw lucenys"

Gracias por tu ayuda que es sumamente valiosa
Responder Con Cita
  #3  
Antiguo 08-03-2009
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 23
defcon1_es Va por buen camino
Cita:
Empezado por GustavoCruz Ver Mensaje
No sé para qué utilizas la función GetIBServerDataBase?
Para averiguar la ruta donde se instaló FireBird, porque FireBird lo puedes instalar en cualquier carpeta.
Cita:
Empezado por GustavoCruz Ver Mensaje
y tampoco sé cuál es el programa externo que ejecutas y para qué lo haces?
El programa externo es gsec.exe, y sirve para el mantenimiento de los usuarios de FireBird (altas, bajas y modificaciones)

Teclea esto desde la consola de comandos (tipo ms-dos), o desde el boton de Inicio de windows, opcion "Ejecutar":

C:\Archivos de programa\Firebird\Firebird_1_5\bin\gsec -USER SYSDBA -PASSWORD masterkey -add gustavo -pw lucenys
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #4  
Antiguo 12-03-2009
Avatar de GustavoCruz
GustavoCruz GustavoCruz is offline
Miembro
 
Registrado: jul 2006
Ubicación: Sampués Sucre (Colombia)
Posts: 296
Poder: 20
GustavoCruz Va por buen camino
Hola defcon1_es, ciertamente te agradezco mucho la ayuda que me haz prestado y la paciencia que haz tenido. He comprendido, sólo hasta hoy, tu código, y me ha funcionado perfectamente...

Gracias a ti y a todos los que enviaron sus aportes
Responder Con Cita
  #5  
Antiguo 13-03-2009
jconnor82 jconnor82 is offline
Miembro
 
Registrado: feb 2008
Posts: 22
Poder: 0
jconnor82 Va por buen camino
Solo para agregar algo:

uso los componentes FIBPlus y este tiene uno TpFIBSecurityService paleta FIBPlusServices el cual se encarga de adminstrar usuarios.

las rutinas para crear, eliminar o modificar son estas:

Crear usuario:

Código Delphi [-]
    pFIBSecurityService1.Params.Values['user_name'] := 'sysdba';
    pFIBSecurityService1.Params.Values['password'] := 'masterkey';
  
    pFIBSecurityService1.Active := True;
    try
      pFIBSecurityService1.UserName := edUserName.Text;
   
      pFIBSecurityService1.Password := edPassword.Text;
       pFIBSecurityService1.FirstName := edFirstName.Text;
      pFIBSecurityService1.LastName := edLastName.Text;
      pFIBSecurityService1.GroupID := StrToInt(edGroupID.text); {No necesario}
      pFIBSecurityService1.AddUser;
    finally
      pFIBSecurityService1.Active := False;
    end;

Modificar usuario:

Código Delphi [-]
     pFIBSecurityService1.Params.Values['user_name'] := 'sysdba';
     pFIBSecurityService1.Params.Values['password'] := 'masterkey';
   
     pFIBSecurityService1.Active := True;
     try
       pFIBSecurityService1.UserName := edUserName.Text;
    
      pFIBSecurityService1.Password := edPassword.Text;
        pFIBSecurityService1.FirstName := edFirstName.Text;
       pFIBSecurityService1.LastName := edLastName.Text;
       pFIBSecurityService1.GroupID := StrToInt(edGroupID.text); {No necesario}
       pFIBSecurityService1.ModifyUser;
     finally
       pFIBSecurityService1.Active := False;
     end;

Borrar usuario:

Código Delphi [-]
     pFIBSecurityService1.Params.Values['user_name'] := 'sysdba';
      pFIBSecurityService1.Params.Values['password'] := 'masterkey';
    
      pFIBSecurityService1.Active := True;
      try
        pFIBSecurityService1.UserName := edUserName.Text;
   
        pFIBSecurityService1.DeleteUser;
      finally
        pFIBSecurityService1.Active := False;
      end;

Supongo y otros componentes libres como zeos tienen implementada esta funcion.

Como referencia te dejo el link Codigo Fuente

Última edición por jconnor82 fecha: 13-03-2009 a las 14:35:15.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Crear Usuarios en Firebird kpss8m Firebird e Interbase 18 20-10-2012 01:05:24
Usuarios en FireBird mRoman Conexión con bases de datos 7 28-08-2008 13:47:18
Usuarios y seguridad en Firebird dango Firebird e Interbase 4 11-07-2006 18:13:26
usuarios con IB Expert for Firebird ale21alito Conexión con bases de datos 2 03-04-2005 19:08:12
Usuarios en Firebird pzhero Firebird e Interbase 4 03-05-2004 22:30:44


La franja horaria es GMT +2. Ahora son las 18:10:55.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi