Создайте новый раздел реестра Windows с помощью c ++

Как уже упоминалось, вы указали registry параметр REG_OPTION_BACKUP_RESTORE в вызове RegCreateKeyEx, что c++ означает, что вы открываете cpp ключ для выполнения резервного c++ копирования или восстановления. Обычно cpp вместо него используется registry REG_OPTION_NON_VOLATILE.

Какая у вас операционная registry система? В Windows 2000 / XP registry куст реестра HKEY_LOCAL_MACHINE не доступен registry для записи пользователям registry без прав администратора, поэтому registry RegCreateKeyEx завершится ошибкой отказа cxx в доступе (ошибка 5). Это windows-registry также относится к Vista, если registry ваше приложение имеет запись c++ requestedExecutionLevel в своем манифесте. Если registry вы используете Vista и ваше c++ приложение не указывает requestedExecutionLevel (или registry если у него вообще нет манифеста), доступ registry к HKEY_LOCAL_MACHINE будет виртуализирован, поэтому cpp RegCreateKeyEx должен быть успешным. Подробнее cpp см. Registry Virtualization in Windows Vista в MSDN.

Есть еще несколько registry проблем с опубликованным registry вами кодом, которые станут cxx очевидными, только если вы windows-registry скомпилируете свой проект registry с определенным UNICODE. Эта строка:

LPCTSTR data = "OtherTestData\0";

должно registry быть

LPCTSTR data = TEXT("OtherTestData\0");

и эта строка:

LONG setRes = RegSetValueEx(hKey, value, 0, REG_SZ,
    (LPBYTE)data, _tcslen(data)+1);

должно быть:

LONG setRes = RegSetValueEx(hKey, value, 0, REG_SZ,
    (LPBYTE)data, (_tcslen(data)+1) * sizeof(TCHAR));

потому c++ что параметр cbData в RegSetValueEx - это длина cxx данных в байтах, а не в символах.

Надеюсь, это c++ поможет!

c++

registry

2022-11-20T07:49:06+00:00