Иван, а почему у вас в RegistryUtils везде ARRAY OF CHAR, а в RegistryStdMessages везде Dialog.String? Как бы неадекватность получается...

А в целом - действительно, наиболее обобщенная получилась система из предложенных.