我有一个基于对话框的应用程序,当我从 Windows 资源管理器双击运行它时,它当前打开的大小与预期的大小不同。每次运行该程序时都会发生这种情况。(我相信这个问题始于几周前我为无关目的编写的一个 shell 宏导致此窗口调整大小一次(这不是我想要的)。)
我尝试通过执行以下操作来查找有关此应用程序窗口大小的信息的存储位置:
(1)在 Windows 资源管理器中右键单击查看应用程序属性
(2)通过 Windows 注册表对应用程序的名称(键、值、数据)进行全面搜索
(3)对我的整个用户帐户文件夹(C:\Users\daniel347x)中的所有非二进制文件进行完整的 GREP(使用 PowerGrep)以查找应用程序名称
上述选项均未找到存储窗口大小的任何位置。
我知道应用程序窗口大小正在被保存,因为窗口的 POSITION 也在运行之间被保存。
是否有人知道窗口大小信息存储在哪里,以及/或者我如何将其重置为正确的值?
答案1
从技术上讲,应用程序可以将文件写入文件系统中您有权限写入的任何位置,以及 FTP 和其他在线文件服务等异地位置。因此,根据参与编写特定软件的人员的决定,该首选项可能是您有权访问的文件系统中的任何位置。
从程序员的角度来看:应用程序的位置和大小是两个不同的值,不需要一起保存,或者根本不保存,可以诚实地硬编码到应用程序中。
通常,程序会将用户相关的首选项保存到注册表或用户文件夹中,可以在文件资源管理器地址栏中输入 %UserProfile%(例如,在 Win7/Vista/Win8 中为 c:\users\YourName)来找到该文件夹。
- HKEY_CURRENT_USER\Software\< 应用程序名称>\
- %应用程序数据%\
如果它是影响所有用户的“系统范围”设置,那么通常这些设置可能会位于公共或所有用户文件夹中(但不太可能),在注册表中,或在程序文件文件夹中。
- HKEY_LOCAL_MACHINE\软件\\
- %ProgramFiles%\\
- < 所有人都可以访问的公共文件夹,例如所有用户 >
更改这些值的难易程度取决于编写软件的公司希望您更改这些值的难易程度。例如,如果他们使用加密算法将应用程序设置保存到文件或注册表中,那么解密文件以进行更改就很难了。
可能的解决方案:
- 如果它是内置应用程序设置(硬编码),那你就倒霉了。
- 如果这种情况发生在一个用户身上,而另一个用户没有,那么它就在用户文件夹或当前用户注册表中。删除注册表项以重置它,或删除应用程序文件夹以重置它。小心,这可能会破坏系统或应用程序,迫使重新安装。
- 如果所有用户都出现这种情况,最近更改,则它位于公共文件夹或注册表中。删除应用程序注册表项,卸载并删除应用程序的所有文件位置,然后重新安装。
- 如果公司愿意公布其注册表项和文件夹位置的存储信息,请在论坛上、通过电子邮件或电话询问他们。您会惊讶地发现技术支持人员非常乐意提供帮助。
[编辑] 值得一提的是,应用程序生成对话框有两种方式。一种是使用 Windows 对话框,另一种是创建自己的对话框。通常,应用程序创建的对话框(由让应用程序生成对话框的程序员创建)具有固定大小且经过硬编码。