Вы не можете писать в части реестра, принадлежащие другому пользователю, если у вас нет прав администратора. Если вы сможете получить права администратора, вам будет гораздо лучше использовать HKLM
. Даже если бы вы могли перебрать HKEY_USERS
, в лучшем случае это хрупкое решение.
Вы, вероятно, не хотите требовать прав администратора. В этом случае в реестре нет места, где пользователи без прав администратора могут хранить данные для совместного использования всеми пользователями. Следовательно, вы должны сохранить в файл в CSIDL_COMMON_APPDATA
.
С другой стороны, возможно, что вы пытаетесь достичь, это установить значение во время установки, которое пользователи получат. Если они затем изменяют настройки в вашем приложении, вы хотите сохранить их в HKCU
. Вы можете сделать это довольно легко, записав настройки по умолчанию в HKLM
. Затем, когда ваше приложение считывает настройки, оно сначала выглядит в HKCU
. Если настройка отсутствует, она считывает ее из HKLM
. Приложение всегда записывает значения в HKCU
. Другой вариант - встроить в программу настройки по умолчанию, а не HKLM
, что упрощает установщик.
Суть в том, что итерация HKEY_USERS
не является хорошим решением для любой проблемы, которую я могу себе представить.