RES: [firebase-br] Olá amigos "Preciso de ajuda" mudar a senha do sysdba via programaçao

Rafael Cabral rafael.cabral em intercraft.inf.br
Ter Ago 16 09:53:10 -03 2005


Fala Carlos Blz?

Vou te passar um código aqui.

//**************************************************************************
****
// FbModifyUser
// Altera usuários no Firebird
//
// Server: PChar -> Nome ou IP do servidor Firebird.
// UserName: PChar -> Login do usuário a ser alterado.
// Password: PChar -> Senha do usuário a ser alterado.
// FirstName: PChar -> Primeiro nome do usuário. Pode ser vazio.
// LastName: PChar -> Último nome do usuário. Pode ser vazio.
// Buffer: PChar -> Buffer de retorno do status da alteração do usuário.
//**************************************************************************
****
function FbModifyUser(Server: PChar; UserName: PChar; Password: PChar;
FirstName: PChar; LastName: PChar; Buffer: PChar): Integer; stdcall;
var
  Status: Array[0..19] of ISC_STATUS;
  Sec: TUserSecData;
  SysDbaUser: PChar;
  SysDbaPwd: PChar;
  DllHandle: THandle;
  Func: function (status: PISC_STATUS; user_sec_data: PUserSecData):
ISC_STATUS; stdcall;
begin

  //Atribuição de ponteiros
  SysDbaUser := StrAlloc(32);
  SysDbaPwd := StrAlloc(9);

  //Seta usuario e senha atual do sysdba. É recomendado criar uma telinha de
autenticação
  StrCopy(SysDbaUser, 'SYSDBA');
  StrCopy(SysDbaPwd, 'masterkey');

	//Limpa buffer de parâmetros de usuário
	ZeroMemory(@Sec, SizeOf(TUserSecData));

	//Atribuição de parâmetros de usuário
	sec.server := Server;
	sec.dba_user_name := SysdbaUser;
	sec.dba_password := SysdbaPwd;
	sec.protocol := sec_protocol_tcpip;
	sec.user_name := UserName;
	sec.password := Password;
	sec.first_name := FirstName;
	Sec.last_name := LastName;
	sec.sec_flags := sec_server_spec or sec_password_spec or
sec_dba_user_name_spec or sec_dba_password_spec or sec_first_name_spec or
sec_last_name_spec;

	//Executa a modificação do usuário
	DllHandle := LoadLibrary('gds32.dll');
	if DllHandle <> 0 then
	  begin
	    @Func := GetProcAddress(DllHandle, 'isc_modify_user');
	    Result := Func(status, sec);
          FreeLibrary(DllHandle);
	  end
	else
	  Result := 1;

	//Verifica se o usuário foi alterado com sucesso
	if (Status[0] = 1) and (Status[1] > 0) then
            begin
              MessageBox(GetDesktopWindow, 'Erro', 'Teste', MB_ICONERROR or
MB_APPLMODAL);
		  Result := 1;
            end
    end;
end;

Na chamada dessa função, no seu caso, o sec.user_name será o SYSDBA e o
sec.password a nova senha do sysdba. O sysdbauser e sysdbapass são o
login/senha atuais do sysdba que são requeridos para alteração do usuário.
Vc pode não precisar disso se tiver usando o Firebird 2 ou então se utilizar
aquelas alterações do security.fdb para permitir que qualquer usuário altere
a sua própria senha, então nesse caso vc pode utilizar o login e a senha do
usuário atual para mudar a senha.

Estou utilizando a DLL gds32.dll por alocação dinâmica. Existem técnicas
mais fáceis de fazer isso, porém preferi a alocação dinâmica para não deixar
a dll carregada na memória ociosa.

Espero ter ajudado.

[]s,

Rafael Cabral

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Carlos Alberto dos santos
Enviada em: terça-feira, 16 de agosto de 2005 08:34
Para: lista em firebase.com.br
Assunto: [firebase-br] Olá amigos "Preciso de ajuda" mudar a senha do sysdba
via programaçao

Olá amigos "Preciso de ajuda"
Alguém sabe se tem com saber a senha definida para o sysdba, sendo que a
senha foi alterada não é mais a "masterkey" é outra não sei qual ?  e como
alterar a senha do sysdba via delphi? Utilizo interbase 6.0 Obrigado....

_________________________________________________________________
MSN Messenger: converse online com seus amigos .  
http://messenger.msn.com.br


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br Para editar
sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa






Mais detalhes sobre a lista de discussão lista