После запуска следующих кодов в 32-битном процессе данные % ProgramFiles% преобразован автоматически.64-битный реестр Windows - почему% ProgramFiles% конвертировано в% ProgramFiles (x86)%?
HKEY hSubKey;
DWORD dwState;
RegCreateKeyEx(HKEY_CURRENT_USER, L"TestKey", NULL, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hSubKey, &dwState);
std::wstring data = L"%ProgramFiles%";
RegSetValueEx(hSubKey, L"TestValue", NULL, REG_EXPAND_SZ,
(BYTE*)data.c_str(), (DWORD)(data.size() * sizeof(WCHAR)) + sizeof(WCHAR));
Результат
< - Какого черта. Кто его расширяет?
Я не хочу преобразовывать данные. -Но я должен использовать тип REG_EXPAND_SZ.
Как мне это сделать?
Я думаю, что это немного отличается от перенаправления реестра. Любой ключ не перенаправлялся. Просто значение среды расширилось. Я не хочу указывать на 64-битные программные файлы. Я хочу указать 32 и 64-битные файлы программы зависит от приложения, читающего реестр. Вот почему я использовал значение среды. – Benjamin
Нет, он изменил буквенную строку «% ProgramFiles%» на «% ProgramFiles (x86)%», это именно то, о чем я говорю. Это не * расширенный *, это просто * переменная среды * –
Ага, вы правы. Я пытаюсь отключить это. – Benjamin