Я ищу программный способ запросить у пользователя имена файлов с помощью оболочки проводника, и мне нужны только загруженные расширения системной оболочки.
Причина, по которой я ищу эту функцию, заключается в том, что я хочу исключить стороннее расширение оболочки как возможную причину сбоев и другого недетерминированного поведения.
В идеале где-то есть флаг, который я пропустил, чтобы я мог передать его функции, что означает что-то вроде «безопасного режима» для экземпляра проводника, где он загружает только расширения системной оболочки. Это кажется такой важной функцией, и я потратил много времени на изучение документов, чтобы найти ее безрезультатно.
Я просмотрел документы API для CFileDialog, GetOpenFileName и IFileOpenDialog. Похоже, что единственный способ предотвратить загрузку несистемных расширений оболочки — это выполнить какой-то глобальный взлом через изменение реестра или использование программных утилит. Ни один из них не является удовлетворительным для приложений с хорошим поведением.
Я знаю, что могу использовать файловые диалоги «старого стиля», которые не основаны на проводнике, но мои пользователи убьют меня, если я навяжу им это. :)
Единственный способ, который я могу придумать, - это (тьфу) заново изобрести колесо и написать диалог открытия файла, похожий на проводник.