【问题标题】:Placing window after TaskManager window fails with ERROR_ACCESS_DENIED在任务管理器窗口失败并显示 ERROR_ACCESS_DENIED 后放置窗口
【发布时间】:2016-05-04 09:49:27
【问题描述】:

我试图在 TaskManager 窗口之后放置一个窗口,但它失败了 ERROR_ACCESS_DENIED:

if (SetWindowPos(myWindowHndl, taskManagerHndl, left, top, right - left, bottom - top, SWP_NOACTIVATE | flags))
{
    LOG_ERROR("SetWindowPos() succeedded");
}
else
{
    LOG_HIGH("SetWindowPos() failed: " << GetLastError());
} 

TaskManager 窗口有什么特别之处吗?是否可以克服这个问题?谢谢。

【问题讨论】:

  • taskManagerHndl的值是多少?你是怎么拿到手柄的?请出示获取句柄的代码。
  • @WernerHenze 代码已简化。它也可能是另一个窗口,但对于其他窗口我没有问题。如果任务管理器SetWindowPos 失败。我确定句柄是任务管理器窗口的,因为我已经打印了它并与 Windows Detective 进行了确认。

标签: c++ winapi windows-8.1 z-order window-position


【解决方案1】:

不完全是任务管理器,这是 Vista 引入的一个功能,称为UIPI(用户界面权限隔离)。 Here 了解更多信息。

尝试运行提升的应用程序。看看它是否有效。如果是,那么这就是你的问题。

【讨论】:

  • 我已使用icacls 将我的流程的完整性级别更改为“高”,它解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多