Const acad = "SOFTWARE\Autodesk\AutoCAD\R16.0" - ЗАБЛУЖДЕНИЕ. Это только частный случай. А искать строку соединения надо от acad.exe. Может быть и несколько AutoCAD.
function ruFindAcadAppString(ExeName: string): string;
function FindForAppVer(AcadApp, ExeName: string): string;
var
Acad_CLSID, AcadLocalServer32: string;
begin
Result := '';
Acad_CLSID :='';
AcadLocalServer32:='';
try
Acad_CLSID:= RegReadString(HKEY_CLASSES_ROOT, AcadApp + '\CLSID', '');
except
end;
if (Acad_CLSID <> '') then begin
try
AcadLocalServer32:= RegReadString(HKEY_CLASSES_ROOT, 'CLSID\'+Acad_CLSID+'\LocalServer32','');
except
end;
if (AcadLocalServer32 <> '') then
if StrFind(ExeName, AcadLocalServer32, 1) > 0 then
Result := AcadApp;
end;
end;
begin
Result := FindForAppVer('AutoCAD.Application', ExeName);
if Result = '' then
Result := FindForAppVer('AutoCAD.Application.15', ExeName);
if Result = '' then
Result := FindForAppVer('AutoCAD.Application.16', ExeName);
if Result = '' then
Result := FindForAppVer('AutoCAD.Application.16.1', ExeName);
end;
Зная, "как числится" нужный AutoCAD можно найти все остальное - достаточно покопаться в реестре.