某些方法在基于ATL的Windows资源管理器预览处理程序中不起作用

时间:2013-07-30 10:13:07

标签: atl windows-shell shell-extensions preview-handler

我正在ATL(没有MFC)编写Windows资源管理器预览处理程序。它的工作正常,除了以下我认为与权限不足有关的问题:

  1. 在调用DoModal()后,基于CDialogImpl的对话框(基于资源)不会显示。
  2. ShellExecute(..." http://www.someurl.com)无法打开默认浏览器。
  3. 我的Logger :: Log()方法执行但我没有看到任何写入日志文件的内容。
  4. 在DoModal()调用返回5(ACCESS_DENIED)后,

    GetLastError()但我不确定是什么。对DoModal()的调用是从上下文菜单处理程序。

    调用时ShellExecute会显示"谷歌浏览器没有响应,立即重新启动?"对话。单击是将关闭Chrome,但永远不会启动它,单击否则不执行任何操作。对于ShellExecuteEx也是如此。

    ShellExecute(NULL, _T("open"), _T("http://www.google.com"), NULL, NULL, SW_SHOWNORMAL)
    

    似乎问题与预览在PREVHOST.EXE中运行的处理程序的权限不足有关。文件日志在我的缩略图处理程序中写得很好,但在此预览处理程序中没有。在PREVHOST.EXE下运行时可以做什么限制?任何想法?

    先谢谢。

1 个答案:

答案 0 :(得分:1)

万一其他人被困在这个问题上。 默认情况下,prevhost.exe正在Low Integrity mode

中运行

Here您可以查看限制列表

简而言之,在您可以写作的地方,您的数量非常有限:

  • 注册表:在HKEY_CURRENT_USER\Software\AppDataLow
  • 下写入并创建子项
  • filesystem:在%USER PROFILE%\AppData\LocalLow
  • 下编写和创建子文件夹

IPC的可用方式也有限制。