MFC:应用程序的注册表项添加了随机 GUID 项,并添加了一个名为“Untitled”的空白 REG_SZ 值?

Posted

技术标签:

【中文标题】MFC:应用程序的注册表项添加了随机 GUID 项,并添加了一个名为“Untitled”的空白 REG_SZ 值?【英文标题】:MFC: Registry key for the application has random GUID keys added with a blank REG_SZ value named "Untitled"? 【发布时间】:2021-02-26 23:35:25 【问题描述】:

我注意到我的基于 MFC 的应用程序(也使用 BCGControlBar Pro)正在使用 GUID(例如Computer\HKEY_CURRENT_USER\SOFTWARE\Acme\Program Name\3CF4873E-E8CC-4e67-A3D2-56F5B610B4FA)的应用程序键下创建多个键。在这些键中有一个名为 Untitled 的 REG_SZ 值,其中 Data 为空白(空字符串)。

这一定是框架正在做的事情,因为我没有创建它们。这些是什么,我该如何阻止它发生?

谢谢。

【问题讨论】:

只是一个“有根据的猜测”,但如果/当您的程序崩溃时,它们可能是用于“自动重启”的键。我曾经获得过很多,直到我禁用了该功能。 我没有任何崩溃,但有重启管理器支持,想知道系统是否可以从更新等重新启动。?嗯,我使用重新启动管理器进行更新以重新启动,还有其他一些“自动重新启动”选项吗? 认为这些条目主要是在我发生崩溃等时添加的。不确定。您可以暂时禁用重启管理器并查看它们是否停止出现吗?至少,你会知道是什么导致了它们。 你的权利!!我进行了升级,并添加了该密钥。所以windows更新重启必须做同样的事情。伙计,我真的很喜欢使用重启管理器,也许我会搞乱捕获重启消息而不是将其发送到 MFC 之类的?您是否碰巧知道任何测试内置实用程序可以在应用程序上使用重启管理器强制重启? 要强制重启管理器激活,你只需要在你的代码中添加一个严重的错误。您可以添加导致写入空指针的菜单命令(或其他任何内容):这通常可以解决问题。 【参考方案1】:

问题正如上面所怀疑的@Adrian Mole。它与 MFC 中的 Restart Manager 实现有关。有趣的是我无法在 Debug 版本中重现该问题,只能在 Release 版本中重现。

由于我的应用程序确实不是基于您打开和保存文件的位置的文档,因此我可以通过更改我的应用程序的 MFC CWinApp 类中的选项来解决它:

m_dwRestartManagerSupportFlags=AFX_RESTART_MANAGER_SUPPORT_ALL_ASPECTS;

m_dwRestartManagerSupportFlags=AFX_RESTART_MANAGER_SUPPORT_RESTART | AFX_RESTART_MANAGER_SUPPORT_RECOVERY;

此外,在 windows-classic-samples-master 中,您会找到一个 rmfilterapp,您可以修改它以使用重启管理器轻松测试您的应用。

【讨论】:

以上是关于MFC:应用程序的注册表项添加了随机 GUID 项,并添加了一个名为“Untitled”的空白 REG_SZ 值?的主要内容,如果未能解决你的问题,请参考以下文章

MFC中添加的菜单项为啥始终是灰色的

如何查找注册表项? 32/64 位

C ++ MFC从小部件ID添加组合框字符串项

如何将消息映射添加到 MFC 中的动态菜单项

mfc 菜单项变灰

mfc 多文档中怎样动态添加菜单项?