最近由于项目的需要,用到了Ms Access数据库,其中需要判断目标系统中是否安装有DAO组件及Jet4组件包。在网络上查找了许久都不得正果,最后只能自己动手了。现把最近的心得记录于下:
function ADOInstalled() : Boolean;
var
r : TRegistry;
sFile,sPath:string;
begin
sPath:=GetEnvironmentVariable('COMMONPROGRAMFILES'); //获取系统文件通用目录
sFile:=sPath+'/System/Ole DB/oledb32.dll'; //对应的jet 4.0的主要Dll文件
Result:=FileExists(sFile);
if not Result then exit;
r := TRegistry.create;
try
with r do //Microsoft.Jet.OLEDB.4.0
begin
RootKey:=HKEY_LOCAL_MACHINE;
Result:= OpenKey('/SOFTWARE/Microsoft/Jet', false );
if Result then
begin
Result:=r.KeyExists('4.0');
end;
CloseKey;
end;
finally
r.free;
end;
end;
function DAO36Installed() : Boolean;
var
V36 : String;
Reg : TRegistry;
sFile,sPath :string;
Begin
sPath:=GetEnvironmentVariable('COMMONPROGRAMFILES'); //获取系统文件通用目录
sFile:=sPath+'/Microsoft Shared/DAO/dao360.dll'; //对应的DAO 3.6版本主要Dll文件
Result:=FileExists(sFile);
if not Result then exit;
V36 := 'DAO.DBEngine.36'; //DAO.PrivateDBEngine.36
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
Result:=Reg.OpenKeyReadOnly(V36);
Reg.CloseKey;
Finally
Reg.Free;
end;
end;
在实际使用时,只要调用DAO36Installed或ADOInstalled即可。