可能重复:
Get the list of ODBC data source names programatically using Delphi
我正在寻找一种获取本地系统ODBC连接的方法。我目前使用的方法是在以下函数中从HKCU读取注册表值,该函数有效!
function GetSystemDSN : TStringlist;
var
ini : TRegistry;
strings : TStringlist;
begin
ini := TRegistry.Create(KEY_READ);
strings := TStringlist.create;
with ini do
try
RootKey := HKEY_CURRENT_USER;
if KeyExists('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources') then
begin
OpenKeyReadOnly('SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources');
GetValueNames(strings);
end;
result := strings;
finally
ini.Free;
end;
end;
但是我应该可以更改为HKEY_LOCAL_MACHINE并读取全局系统的ODBC连接,但是在这里我什么也得不到。我听说使用Wow6432Node
隐藏密钥的32位和64位系统之间存在一些差异。但我仍然一无所获。
我也很担心这个,因为我需要分开32位和64位编译版本?
是否有其他方法可以获得系统和用户ODBC连接?
答案 0 :(得分:1)
为什么不直接使用ODBC API SQLDataSources? 32位代码只能使用为32位程序定义的ODBC数据源,类似于64位代码。 SQLDataSources应该只返回代码可以使用的数据源。