Некоторые методы не работают в обработчике Windows Explorer Preview для ATL
Я пишу обработчик предварительного просмотра Windows Explorer в ATL (без MFC). Он отлично работает, за исключением следующих проблем, которые, я считаю, связаны с недостаточными привилегиями:
- Диалог на основе CDialogImpl (на основе ресурсов) не появляется после вызова DoModal().
- ShellExecute (... " http://www.someurl.com/) не открывает браузер по умолчанию.
- Мой метод Logger::Log() выполняется, но я не вижу ничего записанного в файлы журнала.
GetLastError () после вызова DoModal() возвращает 5 (ACCESS_DENIED), но я не уверен для чего. Вызов DoModal() выполняется из обработчика контекстного меню.
ShellExecute при вызове отображает "Google Chrome не отвечает, перезапустить сейчас?" Диалог. Нажатие YES закроет Chrome, но никогда не запустит его, нажатие NO ничего не сделает. То же самое для ShellExecuteEx.
ShellExecute(NULL, _T("open"), _T("http://www.google.com"), NULL, NULL, SW_SHOWNORMAL)
Похоже, что проблема связана с недостаточными привилегиями для обработчика предварительного просмотра, работающего внутри PREVHOST.EXE. Журнал файлов записывается нормально в моем обработчике миниатюр, но не в этом обработчике предварительного просмотра. Есть ли какие-то ограничения на то, что можно сделать при запуске под PREVHOST.EXE? Есть идеи?
Заранее спасибо.
1 ответ
В случае, если кто-то еще пойман в ловушку на этом. По умолчанию файл prevhost.exe работает в режиме низкой целостности.
Здесь вы можете проверить список ограничений
Короче говоря, вы очень ограничены в местах, где вы можете написать:
- Реестр: писать и создавать подразделы под
HKEY_CURRENT_USER\Software\AppDataLow
- файловая система: писать и создавать подпапки в
%USER PROFILE%\AppData\LocalLow
Также есть ограничения на доступные способы IPC.