Hola Alberto.
No puedo darte una opinión sobre que cuál ProgID es el más apropiado para que aplique tu clase por desconozco los alcances que deseas darle y las prestaciones que te ofrece cada versión para las mismas.
Pero, por si te sirviera de algo, te puedo dar una alternativa para obtener las versiones instaladas sin tener que recurrir al registro para obtenerlas. Hice dos funciones, la primera devuelve las versiones instaladas y la segunda la versión mayor de ellas.
Código Delphi
[-]
uses ComObj, ActiveX;
procedure GetInstalledMSXML2Versions(Versions: TStrings);
const
VERSION : array[1..8] of string = ('1.0','2.0','2.5','2.6','3.0','4.0','5.0','6.0');
var
clsid: TCLSID;
wc : array[0..23] of WideChar;
i : Integer;
s : string;
begin
for i := 1 to High(VERSION) do
begin
s := 'MSXML2.DOMDocument.' + VERSION[i];
StringToWideChar(s , wc, High(wc));
if Succeeded(CLSIDFromProgID(wc, clsid)) then
Versions.Add(s);
end;
end;
function GetMajorMSXML2VersionInstalled: string;
const
VERSION : array[1..8] of string = ('1.0','2.0','2.5','2.6','3.0','4.0','5.0','6.0');
var
clsid: TCLSID;
wc : array[0..23] of WideChar;
i : Integer;
s : string;
begin
for i := 1 to High(VERSION) do
begin
s := 'MSXML2.DOMDocument.' + VERSION[i];
StringToWideChar(s , wc, High(wc));
if Succeeded(CLSIDFromProgID(wc, clsid)) then
Result := s;
end;
end;
Espero que te aporten algún beneficio o al menos te den alguna pauta para seguir, mientras tanto seguiré pensando en "la pregunta del millón".
Saludos