我的 Windows 10 复制/粘贴剪贴板被阻止,可能是什么原因?

我的 Windows 10 复制/粘贴剪贴板被阻止,可能是什么原因?

WinKey所以我刚刚注意到我无法复制或粘贴任何内容。这也会影响隐藏在+下的剪贴板历史记录功能V

最奇怪的是,我在网上找到了一个提示,可以使用 Windowsclip命令接受上一个命令的输出并将其保存到剪贴板。因此,这应该会将“hello”放入剪贴板中:

echo hello | clip

希望我以前就知道这一点。

奇怪的是,即使使用超级用户 shell 尝试,我也收到错误:

D:\>echo dd | clip
ERROR: Access is denied

很高兴错误这么短,因为我必须在这里手动重写它。

知道发生了什么吗?我只需重新启动我的电脑,根据以前的经验,它应该可以解决问题,但我很想知道发生了什么。

其他背景信息:

  • PC 已根据 IT 政策全面更新 - 这是一台工作机器
  • 仅重新启动剪贴板服务并不能解决问题
  • 每次发生问题时,重新启动电脑都可以解决问题,但有时这可能会带来不便

答案1

我知道这已经是老生常谈了,但自从这件事发生在我身上以来,我还是想分享一下。我发现一个应用程序已经设法获得了对 Windows 剪贴板的独占控制权,阻止了任何复制/粘贴。从命令行运行 clip 返回了相同的“错误:访问被拒绝”响应。

只需关闭应用程序/结束进程即可恢复剪贴板功能。

有问题的应用程序是我经常使用的第三方笔记应用程序,似乎是在没有内容的情况下点击复制时发生的错误。可能是由于与 Windows 剪贴板 API 交互时逻辑不合理。

答案2

@Tomáš:我不得不自己深入研究一下这个问题,因为我也遇到了同样的问题。我认为没有一种简单的方法可以从任务管理器或进程资源管理器中确定剪贴板所有者,但我找到了一个 Win32 API 调用。我最终为这项工作编写了一个小实用程序,您可以在此下载http://www.commodorejohn.com/whodunnit.zip- 代码非常简单:

#include <windows.h>
#include <winuser.h>
#include <stdio.h>

void main() {
    printf("Clipboard owner PID: %u\n",GetWindowThreadProcessId(GetClipboardOwner(),NULL));
}

这仍然有点棘手——返回的 PID 可能针对特定线程,但你不能任务终止并且不会显示在任务管理器的“详细信息”视图中;但您可以在“进程”视图中添加 PID 作为一列,该视图会显示子线程。就我而言,原来是某个 Chrome 线程锁定了剪贴板,终止/重新启动它可以解决问题。

相关内容