我有 Windows 7 Ultimate SP1。每当我想打开屏幕键盘时,它都会显示错误“从服务器返回了一个引用”。我需要它,因为我的笔记本电脑没有数字键盘。
答案1
解决方案
这个问题困扰了我几个月,最后经过一些测试才弄清楚。事实证明,如果 Cryptographic 服务未运行,就会出现问题。只需运行 Cryptographic 服务,轻松访问工具就可以正常运行。
技术说明
安全
那么,为什么无障碍工具需要加密服务呢?这是因为无障碍工具需要在系统的任何时候都可以访问,因为它们提供的功能允许人们……使用权系统。因此,如果它们在受限制的、提升权限的区域(例如登录屏幕或 UAC 对话框)中不可用,它们就没有多大用处。
因为它们需要可用到处,包括限制区域,它们还必须是安全的,以防止打开可利用来利用限制区域的攻击媒介。为此,Windows 必须通过检查其数字签名来验证程序。为此,它需要加密服务。
有人可能会认为,在桌面等常规用户模式区域中运行时,它不需要这样做,但尝试在用户模式下无条件运行它并尝试仅在提升区域中进行验证会不必要地使其复杂化,从而产生更多漏洞的可能性。因此,Windows总是在运行时验证辅助功能工具,因此总是需要加密服务。
编程缺陷
(当然,如果服务尚未运行,则应该运行它。良好的设计实践要求程序始终检查依赖项,如果不存在则安装或运行它们,并返回合适的如果他们不能,则显示消息。如果他们这样做了,那么这个问题就不会发生,因为它会自动运行加密服务和/或给出一个错误,清楚地说明问题是什么,而不是这样的神秘消息。)
其他症状
另请注意,如果加密服务未运行,您可能会遇到其他与安全相关的问题,例如以提升权限运行项目而不显示 UAC 对话框。例如,单击系统保护链接我的电脑可能会显示等待光标片刻,然后什么也没有发生,现在单击我的电脑窗口导致 Windows 发出叮当声(即禁用)。这是因为consent.exe
尝试运行以显示 UAC 提示,但如果没有运行加密服务,它就无法执行其任务,只能挂起。要修复它,您需要打开任务管理器并 kill consent.exe
。您将收到一条Incorrect function
错误消息,并且我的电脑再次启用。(您仍然需要运行加密服务才能使其真正发挥作用。)