首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows XP、HKCU\...\LastVisitedMRU允许的最大项目数?

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

Stack Overflow用户
提问于 2009-05-06 01:07:05
回答 3查看 939关注 0票数 2

我有一个场景,我需要把一个脚本放在一起,为当前用户的以下注册表项添加一个条目:

代码语言:javascript
复制
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedMRU\

我试图找出这个键允许的值的最大数量,以便我可以让我的脚本在末尾添加另一个值。值名称从字母表的开头开始,但我不想假设它们以"Z“结束。

背景:我们正在重新打包一个专有的(即不是我们自己的,我们没有访问源代码的权限)应用程序,并尝试设置它的默认文件->打开位置。在经历了许多痛苦的快照和File/Regmon会话之后,这似乎是实现这一点的方法。我知道这很奇怪,但它确实有效,我已经手动测试过这个理论。这就是说,我当然愿意接受关于如何以一种对Win32更友好的方式来实现这一点的建议-前提是应用程序本身没有更好的机制来实现这一点。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-12 04:45:46

对于每个可执行文件名称,此注册表项保存该应用程序最后一次执行其SaveAs (可能是Save,我不确定)的目录。

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

我的最大值是"y“,我的MRUListsxahmcjierfobglyuqpdtwvkn

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

如果应用程序不在那里,并且不是所有的字母都在MRUList中,它将获取第一个可用字母,将信息放入该字母中,然后将该字母放在MRUList的前面。

如果应用程序不在那里,并且所有的字母都被使用了,它将抓取MRUList上的最后一个字母,将信息放入该字母中,然后将其移动到MRUList的前面。

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

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

关于您关于无法访问该应用程序源代码的评论,这无关紧要。并不是应用程序在更改这些密钥。ComDlg32是Windows本身的常用对话框(打开、另存为、打印设置等)。

如果要为给定的应用程序设置MRU,请执行以下步骤。

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

2/获取MRUList之外的下一个可用字母。如果MRUList已经包含了从ay的所有字母,或者您不确定y永远是最后一个(它可能在注册表中的其他位置可配置),那么获取MRUList末尾的最后一个字母。

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

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

那里。这应该就行了。

票数 8
EN

Stack Overflow用户

发布于 2009-05-06 01:16:59

除非我误解了您的情况,否则标准的Windows OpenFileDialog应该有一个名为InitialDirectory的属性,它指定对话框应该打开到的目录。

票数 2
EN

Stack Overflow用户

发布于 2009-05-15 20:01:44

其他的是重要的吗?我会考虑放弃其他的,或者重新使用第一个或最后一个。(我也会尝试使用任何字符,但幸运的是它可能会起作用。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/827612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档