是否可以指定cwinapp::writeprofilestring()使用的应用程序名?
如果我使用cwinapp::setRegistryKey将公司名称设置为“MyCompany”,并在名为“SomeApp”的应用程序中调用afxGetApp()->writeProfileString,则我的字符串将存储在以下注册表项下:
hkey_当前用户\软件\ MyCompany\SomeApp\…
问题是我的用户希望运行多个版本的someapp。因此,为了使注册表设置不发生冲突,我希望将它们存储在如下键中:
hkey_current_user\software\mycompany\someapp 1.1\…
hkey_current_user\software\mycompany\someapp 2.0\…
等。
我可以用自己的函数替换writeprofilestring的所有实例,但这将非常困难,因为它在我们的源代码和一些我们使用的第三方库中都被广泛使用。
有什么方法可以强制writeprofilestring对应用程序名使用不同的字符串吗?

最佳答案

应用程序构造函数中的代码运行良好:

  free((void*)m_pszProfileName);
  free((void*)m_pszRegistryKey);
  m_pszRegistryKey = _tcsdup(L"nobugz");
  m_pszProfileName = _tcsdup(L"myapp\\1.0");

07-27 13:29