0

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

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

DoModal() 调用后 GetLastError() 返回 5 (ACCESS_DENIED) 但我不确定是什么。对 DoModal() 的调用是从上下文菜单处理程序进行的。

调用 ShellExecute 时会显示“Google Chrome 无响应,立即重新启动?” 对话。单击“是”将关闭 Chrome,但永远不会启动它,单击“否”则不执行任何操作。ShellExecuteEx 也一样。

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

问题似乎与预览在 PREVHOST.EXE 中运行的处理程序的权限不足有关。文件日志在我的缩略图处理程序中写得很好,但在这个预览处理程序中却没有。在 PREVHOST.EXE 下运行时可以执行的操作是否有任何限制?有任何想法吗?

提前致谢。

4

1 回答 1

1

以防万一其他人被困在这上面。默认情况下 prevhost.exe 在低完整性模式下运行

在这里您可以查看限制列表

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

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

IPC 的可用方式也有限制。

于 2014-08-06T13:38:04.600 回答