测试

测试

我一直使用 Windows 7 中的键盘快捷键来操作某些文件夹。最近我开始使用 Windows 8,现在使用 Windows 8.1。

文件夹中的键盘快捷键似乎存在问题C:\Users\username\Links。我指定了快捷键,但它不起作用。但是,任何文件夹的任何其他快捷键都可以正常工作。我不能只对Links文件夹中的快捷键使用键盘快捷键。

在此处输入图片描述

如何解决这个问题?

编辑

我尝试了一些解决方法,但是都没有效果:

我从 Links 文件夹中剪切了快捷方式,并将其粘贴到桌面上。相同的键盘快捷键不起作用。我将键盘快捷键更改为其他快捷键(顺便说一句,我确定键盘快捷键没有分配给其他快捷键),它使用不同的键盘快捷键就可以正常工作。我将其移回 Links 文件夹,但它不起作用。我再次将快捷方式更改为其他快捷键。我以为这次它会起作用,但即使将快捷键移回 Links 文件夹并重新分配不同的键盘快捷键,它仍然不起作用不是工作。

答案1

测试

快捷方式替换

我进行了一些测试,得到了一些有趣且非常有说服力的结果。我在 Windows ME 中进行了测试(这是当时我手头上有的最早版本的 Windows),然后在 XP 和 7 上重复了该测试。这是我所做的,您可以重复一下:

  1. 在桌面上创建计算器的快捷方式,命名C并为其分配一个未使用的热键
  2. 测试热键是否有效
  3. 在文件夹中创建记事本的快捷方式Links,将其命名为N,并为其分配一个不同的、未使用的热键
  4. 确认热键确实不是工作
  5. 从桌面删除计算器的快捷方式
  6. 将记事本的快捷方式从文件夹移动Link到桌面,并将其重命名为C
  7. 按下分配给原来的计算器的快捷方式
  8. 请注意,它运行记事本

这发生在 Windows ME 和 XP 上,但在 Windows 7 中,按下任一热键最后都没有任何反应。

内部热键格式

由此,我们可以假设,当你将热键分配给快捷方式时,它会将其分配给快捷方式的完整路径。例如,在上面的测试中,将热键++设置为Alt计算器快捷方式会导致Windows在内部注册类似这样的内容:⇧ShiftC

C A S W K P
- + + - C "C:\…\Foobar\Desktop\C.lnk"

因此,如果您删除(或移动或重命名)快捷方式,按下该键将尝试运行不存在的快捷方式。奇怪的是,如果您在 Process Explorer 中监视文件访问,您将看不到FILE NOT FOUND尝试访问丢失的快捷方式的错误,但如果您恢复快捷方式,您将看到按下热键时再次访问它。

自动热键管理

此外,Windows 7 不运行复制的快捷方式似乎表明,每当移动、重命名或删除快捷方式时,Explorer 都会进行某种热键管理,但当然,它的功能是有限的。(例如,如果两个快捷方式共享一个热键,则删除具有该热键的快捷方式不会突然将热键重新分配给另一个快捷方式,您需要手动打开该快捷方式的特性对话框并单击[OK]即可执行此操作。

链接文件夹重定向

然后我考虑重定向Links文件夹(图 1)。我尝试重定向它,然后将移动的文件夹复制回原始位置。我发现热键对这两个文件夹中的快捷方式都不起作用。然后我尝试从文件夹中删除属性,甚至删除desktop.ini其中的文件,假设 Windows 会特殊对待它们,但这没有帮助。然后我在用户数据文件夹中创建了一个新的常规文件夹,令我惊讶的是,热键仍然不起作用。

文件系统中的快捷热键

接下来,我尝试使用其他驱动器上的快捷方式,但仍然没有结果。我尝试在 Windows 7 中的几个不同位置为快捷方式分配热键,只有DesktopStart Menu文件夹或其子目录中的快捷方式可以使用热键。

结论

看来 Explorer 的快捷键功能非常有限,只适用于“开始”菜单和桌面。我不知道这是个错误还是故意的,因为我找不到任何关于这个限制的提及。微软自己的关于该主题的页面对此只字未提。(通过反馈表。我点击[No]并提交了此页面的链接。)没有理由相信这在 Windows 8 或 8.1 或甚至未来版本中会有所不同(假设它们保留了 Explorer)。

建议

你可以(尝试)举报,但我并不指望这个问题能得到解决。将需要热键的快捷方式存储在另一个文件夹中会更快、更简单。


图1:链接位置设置:

链接位置对话框的屏幕截图

答案2

我最近问了一个类似的问题,我已经找到了答案,所以我想我的答案就在这里。我的问题更多的是关于 Windows 快捷键热键管理的内部功能以及是什么和如何。您可以将文件夹添加到列表中吗?是否有一些鲜为人知的文件夹可以在其中放置带有热键的快捷方式?最后,我只是确认了已知的内容,但这是我的操作方式。

我第一次尝试弄清楚的是普罗克蒙的痕迹explorer.exe。Procmon 是一个跟踪文件和注册表访问的实用程序,我的结论是该过程似乎没有在注册表中寻找任何其他路径。

不太满意,我想起有一个十年前 Windows 2000 源代码泄露。我追踪了这个问题,并查看了代码中的逻辑。结果发现快捷方式的热键在两个地方进行管理。

  1. 改变快捷方式的属性时。在快捷方式的属性对话框中按“确定”或“应用”时,Windows 会检查快捷方式的文件夹是否是固定文件夹列表或其子文件夹。此列表为CSIDL_PROGRAMSCSIDL_COMMON_PROGRAMSCSIDL_STARTMENUCSIDL_COMMON_STARTMENUCSIDL_DESKTOPDIRECTORYCSIDL_COMMON_DESKTOPDIRECTORYCSIDL 表示法.(每个 CSIDL 项最终都会根据注册表值进行查找,除非可能缓存在某处。我没有查找它的实现细节。)如果快捷方式位于其中一个位置,则会注册一个热键,如果适用,则会擦除旧的热键。
  2. 什么时候explorer.exe开始。在代码的另一个部分,进程首次启动时会枚举所有开始菜单项以及所有桌面项explorer.exe。这两个不同路径的枚举是在不同的函数中完成的。枚举开始菜单文件夹中项目的函数是递归的,并且此函数还处理图标的缓存。枚举桌面上项目的函数不是递归的,而只是检查桌面文件夹本身。

没有尝试处理移动或删除快捷方式。

这解释了某些奇怪的行为,例如:

  • 当您从有效位置移动或删除快捷方式时,热键仍保留在内存中,按下它会盲目尝试运行现在不存在的快捷方式。(只要当前进程explorer.exe存在。)
  • 同样,如果您将带有热键的快捷方式移动到有效文件夹中,则直到下一个会话或您编辑快捷方式的属性时才会发现该快捷方式。
  • 如果您在子文件夹中创建桌面快捷方式,它将在当前explorer.exe会话中起作用,因为按 OK/应用会根据上述机制 1 添加热键。但是,在下一个会话中,不会添加此热键,因为快捷方式位于子文件夹中,explorer.exe进程首次启动时不会递归到该子文件夹中。

最后,我基本证实了已知的情况,但知道这一点感觉很好为什么

答案3

创建始终有效的快捷方式的一个可靠方法是使用自动热键

由于 AutoHotkey 快捷键实际上是宏,因此不仅可以保证快捷键在任何地方、任何时间都能发挥作用,而且还可以执行比启动程序更复杂的任务。

答案4

有一个相关问题,缓慢的 Windows 桌面键盘快捷键

终止休眠应用程序可消除超时。

相关内容