これを読み、 lpClass を使用して「間違ったファイル拡張子の問題」を修正できることを理解しました。ただし、次のコード行を読んでいると、実行可能ファイルを開くときに lpClass が何に使用されているのかわかりません。
//code excerpt from foo.exe
SHELLEXECUTEINFO info;
ZeroMemory(&info, sizeof(SHELLEXECUTEINFO));
info.cbSize = sizeof(SHELLEXECUTEINFO);
info.nShow = SW_NORMAL;
info.lpVerb = L"open";
info.lpClass = L"ProgId Of foo.exe"; //what is this used for???
info.fMask = SEE_MASK_FLAG_LOG_USAGE | SEE_MASK_CLASSNAME;
info.lpFile = L"bar.exe";
info.lpParameters = lpszParam;
ShellExecuteEx(&info);
lpClass が指定されていない場合、lpVerb が「open」で lpFile が exe の場合、コードを実行すると単に exe が実行されます。しかし、この場合のように lpClass を指定するとどうなるでしょうか。