【问题标题】:How can one manipulate the Start menu's "Recently Used Programs" list programmatically? [closed]如何以编程方式操作“开始”菜单“最近使用的程序”列表? [关闭]
【发布时间】:2009-04-11 10:35:17
【问题描述】:

我正在寻找一种使程序显示(经常)使用的方法,以便它们出现在“开始”菜单的“最近使用的程序”中(在零接触安装之后)。

我试图弄清楚 Windows 如何存储与程序使用频率相关的信息。

当我从“开始”菜单运行程序时,我可以看到的唯一(可能)相关的东西是一些(似乎没有记录的)BagMRU 注册表项,它们对我没有任何意义。

我确实找到了a way 来固定程序,但这不是我要在这里寻找的。​​p>

更新:请参阅 cmets 了解我为什么要这样做...

Update2:我正在取得进展...现在我知道它们的密钥存储在哪里,并且我知道这些密钥是ROT13“加密”的。而值的后 4 个字节是计数器。http://blog.didierstevens.com/2006/07/24/rot13-is-used-in-windows-you’re-joking/

这个ROT13(wikipedia) 加密的东西很有趣。嗯,当然是有原因的。他们不希望您能够通过简单的搜索找到它。

Lol, and in windows 7 they are using Vigenère crypto! 好多了:D

【问题讨论】:

    标签: windows rot13


    【解决方案1】:

    冒着被否决的风险,这不是你应该做的事情。 “最近使用的程序”属于计算机的所有者,而不是您的程序。

    如果您的程序像您认为的那样有用,它会自动显示在那里。

    Raymond Chen 写了很多文章来解释为什么这种事情是个坏主意。

    这在所有其他坏主意中占了上风,例如:

    • 如何强制我的程序成为某些文件类型的处理程序?
    • 如何让我的程序始终处于领先地位。
    • 当我的用户以前有权自行决定如何配置他们的软件时,我怎么能通过为他们做决定来惹恼他们? :-)

    更新:

    您可能想尝试几件事。

    • 将程序 (explorer.exe) 复制到 axolotl.exe 并运行它足够的次数以使其出现在列表中。然后在注册表中搜索它(假设您的磁盘上没有另一个 axolotl.exe)。请注意,某些字符串存储为 Unicode,因此它可能不是简单的搜索。如果 MS 以某种方式对它们进行编码以使这变得更加困难,我也不会感到惊讶。
    • Microsoft 的 sysinternals 有一个可以监视注册表的工具(regmon,请看 here,您可以在运行程序的同时运行它几次,以查看添加到列表中的更新内容。

    【讨论】:

    • +1 用于教育即将做坏事的人™ :) Raymond Chen 无论如何都应该是必读的。
    • 我知道并且同意你的看法。但是我的情况不同。我只想在部署期间(或首次登录时)执行此操作。一段时间后,该列表将反映用户实际使用的内容。 (或多或少你的理由是我不想固定的原因。)
    • Kalmi 够公平,很抱歉我没有更好的答案(我实际上不知道),但我相信该列表应该反映用户的选择 all i> 时间。你说这只是给用户带来暂时的不便,我的论点是没有不便更好。
    • 为什么需要这样做?程序的第一次运行可能会看到它被添加到 MRU 列表中。
    • 如果能做到,我怀疑陈先生(旧新事物)会知道怎么做。但他可能会给你同样的建议。
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      如果可能,我建议不要这样做。正如您所说,这是未记录的行为,并规避了常用程序列表的预期用途。桌面图标和快速启动快捷方式有什么问题?

      【讨论】:

      • 这将用于机器被很多人使用并且每个用户都有自己的个人资料的环境中。大多数时候人们会使用新的配置文件。这就是为什么我们需要良好的首次用户体验(默认)。
      【解决方案4】:

      使用 Win32 Shell COM 接口
      它已经解释了几十年,就像所有未记录的功能一样,在 Google Groups (Win32) 上,与 W95 上的方法相同..

      【讨论】:

      • 所有其他 MRU 列表以明文和不同格式存储在注册表中(没有最后使用日期,没有使用计数器,只是一个简单的有序列表)。我认为这种方法在这里行不通。这似乎是一个特例。
      最近更新 更多