是否可以指定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为应用程序名称使用不同的字符串?
答案 0 :(得分:4)
app构造函数中的代码运行良好:
free((void*)m_pszProfileName);
free((void*)m_pszRegistryKey);
m_pszRegistryKey = _tcsdup(L"nobugz");
m_pszProfileName = _tcsdup(L"myapp\\1.0");