回复人: softwing(无人喝彩) (  ) 信誉:100  2002-05-27 22:06:00  得分:0  
 
 
  需要操纵注册表,例子如下:
这儿指明安装了那些odbc驱动程序 HKEY_LOCAL_MACHINE\ODBC\ODBCINST.INI\ 
要添加的odbc就加在这了 HKEY_LOCAL_MACHINE\ODBC\ODBC.INI
1、先在这加上一个odbc数据源名ab ,指明类型
HKEY_LOCAL_MACHINE\ODBC\ODBC.INI\ODBC Data Sources
ab sqlserver
2、在HKEY_LOCAL_MACHINE\ODBC\ODBC.INI\ 中写入ab的参数
HKEY_LOCAL_MACHINE\ODBC\ODBC.INI\ab 
Database abcd            //数据库
Driver   C:\WINNT\System32\sqlsrv32.dll  //驱动程序
         读HKEY_LOCAL_MACHINE\ODBC\ODBCINST.INI\驱动程序名\driver 就是了 
LastUser  sa                             //登录用户名
Server    192.168.8.163
具体的数据库自己参照已建好的odbc数据源来写注册表就行了
procedure button1click(sener:tobject);   //服务器
var
  reg: TRegistry;
  Driver: string;
begin
//建立和更新odbc数据源
//查找ODBCINST.INI键,如果sql server的驱动程序没有安装,则提示退出
//如果存在,则进行配置
  reg := TRegistry.Create;
  try
    with reg do
    begin
      RootKey := HKEY_LOCAL_MACHINE;
      if OpenKey('Software\ODBC\ODBCINST.INI\SQL Server', False) then
      begin //如果存在sql server 驱动程序
        Driver := ReadString('Driver');
        CloseKey;
        if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources', True) then
        begin //注册一个DSN名称
          WriteString(Edit_DataSource.Text, 'SQL Server');
        end
        else
        begin //创建键值失败
          Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
          exit;
        end;
        CloseKey;
        //end 建立dsn
        if OpenKey('Software\ODBC\ODBC.INI\' + Edit_DataSource.Text, True) then
        begin
          WriteString('Database', Edit_DataSource.Text);
          WriteString('Driver', Driver);
          WriteString('LastUser', Edit_LoginUser.Text);
          WriteString('Server', Edit_Ip.Text);
        end
        else
        begin //创建键值失败
          Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
          exit;
        end;
        CloseKey;
      end
      else
        Application.MessageBox('在当前机器上没有安装 SQL Server的ODBC 驱动程序!,请安装相应的驱动程序', '驱动程序出错', MB_ICONINFORMATION or MB_OK);
      CloseKey;
    end;
  finally
    reg.Free;
  end;
end;