gpt4 book ai didi

winapi - Windows XP、HKCU\...\LastVisitedMRU 允许的最大项目数?

转载 作者:行者123 更新时间:2023-12-04 16:38:12 25 4
gpt4 key购买 nike

我有一个场景,我需要编写一个脚本来为当前用户向以下注册表项添加一个条目:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU\

我试图找出此键中允许的最大值数,以便我可以让我的脚本将另一个值附加到末尾。值名称从字母表的开头开始,但我不想假设它们以“Z”结尾。

背景:我们正在重新打包专有(即不是我们自己的,我们无权访问源)应用程序并尝试设置其默认文件 -> 打开位置。在许多痛苦的快照和文件/Regmon session 之后,这似乎是实现它的方法。我知道这很骇人听闻,但确实有效,我已经手动测试了该理论。也就是说,我非常愿意接受有关如何以更 Win32 友好的方式执行此操作的建议 - 前提是应用程序本身没有更好的机制来执行此操作。

最佳答案

对于每个可执行文件名称,此注册表项包含该应用程序最后执行其 SaveAs(可能还有 Save,我不确定)所在的目录。

每个字母包含一个可执行文件的信息,MRUList 包含顺序(这很重要)。

我的最大值为“y”,我的 MRUListsxahmcjierfobglyuqpdtwvkn

根据实验,当我从一个已经存在的应用程序中执行 SaveAs 操作时,它只会替换该字母的信息并将其移动到 MRUList 的前面。

如果应用程序不存在并且不是所有字母都在 MRUList 中,它会获取第一个可用字母,将信息放入该字母中,然后将该字母放在MRUList.

如果应用程序不存在并且所有字母都被使用,它会获取 MRUList 上的最后一个字母,将信息放入该字母中,然后将其移至 的前面>MRUList.

我注意到为一个全新的应用程序做一个 SaveAs 并没有给我 z 字母,它重新使用了 `MRUList' 中的最后一个。

key 本身看起来像 UCS-2(16 位 Unicode,在我的澳大利亚版 Windows 中散布空字节的 ASCII,您的里程可能因国际变体而异)并且它们包含以空结尾的可执行文件名称,然后是空终止目录。

关于您关于无法访问该应用程序源的评论,这无关紧要。不是那个应用程序改变了这些键。 ComDlg32 是 Windows 本身的常用对话框(打开、另存为、打印设置等)。

如果您想为给定的应用程序设置 MRU,请按照以下步骤操作。

1/在字母键中搜索该应用程序。如果找到,请转到第 3 步。

2/获取下一个不在 MRUList 中的可用字母。如果 MRUList 已经包含从 ya 的所有字母或者你不相信 y 将始终是最后一个(它可以在注册表中的其他地方进行配置),获取 MRUList 末尾的最后一个字母。

3/现在你收到了你的信。使用 UCS-2 数据为您的应用程序和目录(均以 null 结尾)更改或创建该字母键。

4/更改 MRUList 以将您的字母放在前面。

那里。应该这样做。

关于winapi - Windows XP、HKCU\...\LastVisitedMRU 允许的最大项目数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/827612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com