Я не уверен, что это удовлетворит все ваши потребности, но это может помочь вам взглянуть на это под другим углом.
Обычно, когда мне нужно сделать что-то подобное, у меня есть установщиксоздайте «фиктивные» значения для значений реестра, которые понадобятся программе.В результате программе никогда не требуется создавать новое значение реестра, и процесс удаления является тривиальным.
Если мне нужны динамически сгенерированные значения реестра, у меня обычно будет значение реестра, указывающее на папку в данных приложения.где я буду использовать какую-то файловую структуру.При этом удаление динамических элементов является тривиальной задачей (просто удалите папку).