Создайте новый ключ реестра Windows, используя C ++

Если вы с пользой используете flexbox, это должно помочь решить проблему.

.modal-dialog {
  height: 100%;
  width: 100%;
  display: flex;
  align-items: center;
}

.modal-content {
  margin: 0 auto;
}
14
задан Brian Sweeney 3 February 2009 в 20:02
поделиться

3 ответа

Я компилировал свою собственную персональную Библиотеку функций в течение многих лет. Одна часть этого имеет дело полностью с доступом к реестру, посмотрите, что CreateRegistryKey функционирует Реестр. Файл Cpp.

Если Вам интересно, можно захватить всю библиотеку здесь.

16
ответ дан 1 December 2019 в 12:53
поделиться

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

Какую операционную систему Вы выполняете? В Windows 2000/XP, HKEY_LOCAL_MACHINE структура данных реестра не является записываемой пользователями неадминистратора, таким образом, RegCreateKeyEx перестанет работать с ошибкой доступа запрещен (ошибка 5). Это также относится к Vista, если Ваше приложение имеет a requestedExecutionLevel запись в ее декларации. Если Вы запускаете Vista, и Ваше приложение не указывает a requestedExecutionLevel (или если это не имеет декларации вообще), доступ к HKEY_LOCAL_MACHINE будет виртуализирован, таким образом, RegCreateKeyEx должен успешно выполниться. Посмотрите Виртуализацию Реестра в Windows Vista в MSDN для получения дополнительной информации.

Существуют еще некоторые проблемы с кодом, который Вы отправили, который только станет очевидным, если Вы скомпилируете свой проект с UNICODE определенный. Эта строка:

LPCTSTR data = "OtherTestData\0";

должен быть

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));

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

Я надеюсь, что это помогает!

3
ответ дан 1 December 2019 в 12:53
поделиться

Первая подсказка является Вашим использованием REG_OPTION_BACKUP_RESTORE. Вы, вероятно, не хотите использовать тот флаг, поскольку я полагаю, что он требует специального "резервного" полномочия, которое необходимо включить заранее. Нормальные приложения не захотят делать это.

2
ответ дан 1 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: