控制WriteProfileString

时间:2009-11-27 18:37:55

标签: windows mfc visual-c++

是否可以指定CWinApp :: WriteProfileString()使用的应用程序名称?
如果我使用CWinApp :: SetRegistryKey将我公司的名称设置为“MyCompany”,并在我的应用程序名为“SomeApp”中调用AfxGetApp() - > WriteProfileString,则我的字符串将存储在以下注册表项下:
HKEY_CURRENT_USER \ Software \ MyCompany \ SomeApp \ ...

问题是我的用户想要运行SomeApp的多个版本。因此,为了使注册表设置不冲突,我想将它们存储在这样的键中:
HKEY_CURRENT_USER \ Software \ MyCompany \ SomeApp 1.1 \ ...
HKEY_CURRENT_USER \ Software \ MyCompany \ SomeApp 2.0 \ ...
等。

我可以用自己的函数替换WriteProfileString的所有实例,但这很困难,因为它在我们的源代码和我们使用的一些第三方库中被广泛使用。

是否有某种方法可以强制WriteProfileString为应用程序名称使用不同的字符串?

1 个答案:

答案 0 :(得分:4)

app构造函数中的代码运行良好:

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