L>Я с удовольствием забью на нее. Но нельзя ли по подробнее...
Наколько я понял, ты используешь ShellExecute только потому,
что не знаешь где лежит экзешник, обрабатывающий .rar
Потому что если ты это знаешь, или можешь найти через
::SearchPath(), то просто используй ::CreateProcess().
Он вернет тебе HANDLE процесса, который можно скормить
::WaitForSingleObject().
Так вот. ::AssocQueryString() как раз нужна чтобы узнать,
какой exeшник зарегистрирован за расширением .rar