Crear un DSN de sistema desde Delphi.

Este ejemplo es para un DSN de Access.

procedure TForm1.Button1Click(Sender: TObject);
var
Reg:TRegistry;
Path:String;
begin
Path:=’c:\Neptuno.mdb’;
Reg:=TRegistry.Create;
Try
Reg.RootKey:=HKEY_LOCAL_MACHINE;
Reg.OpenKey(‘\Software\ODBC\ODBC.INI\jose’,True);
Reg.WriteString(‘DBQ’,Path);
Reg.WriteString(‘Driver’,’c:\windows\system\odbcjt32.dll’);
Reg.WriteInteger(‘DriverId’,25);
Reg.WriteString(‘FIL’,’MS Access;’);
Reg.WriteInteger(‘SafeTransactions’,0);
Reg.WriteString(‘UID’, »);
Reg.OpenKey(‘\Software\ODBC\ODBC.INI\jose\Engines\Jet’,True);
Reg.WriteString(‘ImplicitCommitSync’, »);
Reg.WriteInteger(‘MaxBufferSize’,2048);
Reg.WriteInteger(‘PageTimeout’,5);
Reg.WriteInteger(‘Threads’,3);
Reg.WriteString(‘UserCommitSync’,’Yes’);
Reg.OpenKey(‘\Software\ODBC\ODBC.INI\ODBC Data Sources’,True);
Reg.WriteString(‘jose’,’Microsoft Access Driver (*.mdb)’);
finally
Reg.Free;
end;
end;

(Matizaciónes: Julio García)

Reg.WriteString(‘Driver’,’c:\windows\system\odbcjt32.dll’);

Se está presuponiendo que la ruta al directorio system es siempre esa, cuando no tiene por qué serlo.

El driver necesario, en este caso odbcjt32.dll al tratarse de Access, se encuentra en el directorio de sistema de Windows. La ruta a este directorio se puede obtener con la función GetSystemDirectory.

El código mostrado puede utilizarse para crear un DSN de usuario con sólo cambiar:

Reg.RootKey:=HKEY_LOCAL_MACHINE por Reg.RootKey:=HKEY_CURRENT_USER.