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