MFC 拡張子に対応したアプリケーションの取得(プログラムから開く)

一つの拡張子に対応したアプリケーションの取得例はさまざまみかけますが,プログラムから開くに登録されているアプリケーションはどうするのかな?と疑問だったので新しく関数を作成してみました.
結果は,appname と apppath に名前とパスが格納される.

void getAssocApps(CString ext, CStringArray& appname, CStringArray& apppath)
{
CString base = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\";
CString dir = base + ext + "\\OpenWithList";
CRegKey reg;
if(reg.Open(HKEY_CURRENT_USER,dir,KEY_READ) != ERROR_SUCCESS) return;
CString mrulist,buff;
ULONG ulLen = MAX_PATH;
reg.QueryStringValue("MRUList",buff.GetBuffer(MAX_PATH + 1),&ulLen);
mrulist = buff;
buff.ReleaseBuffer();
CStringArray applist;
for(int i=0; i