Управление WriteProfileString - PullRequest
       4

Управление WriteProfileString

2 голосов
/ 27 ноября 2009

Можно ли указать имя приложения, которое используется CWinApp :: WriteProfileString ()?
Если я использую CWinApp :: SetRegistryKey, чтобы установить имя моей компании на «MyCompany», и я вызываю AfxGetApp () -> WriteProfileString в моем приложении с именем «SomeApp», моя строка будет храниться в следующем разделе реестра:
HKEY_CURRENT_USER \ Программное обеспечение \ MyCompany \ SomeApp \ ...

Проблема в том, что мои пользователи хотят запускать несколько версий SomeApp. Поэтому, чтобы настройки реестра не конфликтовали, я хочу сохранить их в ключах, таких как:
HKEY_CURRENT_USER \ Программное обеспечение \ MyCompany \ SomeApp 1.1 \ ...
HKEY_CURRENT_USER \ Программное обеспечение \ MyCompany \ SomeApp 2.0 \ ...
и т. д.

Я мог бы заменить все экземпляры WriteProfileString своей собственной функцией, но это было бы довольно сложно, поскольку он широко используется как в нашем исходном коде, так и в некоторых сторонних библиотеках, которые мы используем.

Есть ли способ заставить WriteProfileString использовать другую строку для имени приложения?

1 Ответ

4 голосов
/ 27 ноября 2009

Этот код в конструкторе приложения работал хорошо:

  free((void*)m_pszProfileName);
  free((void*)m_pszRegistryKey);
  m_pszRegistryKey = _tcsdup(L"nobugz");
  m_pszProfileName = _tcsdup(L"myapp\\1.0");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...