OK, there are many registry classes out there, but this is the one I wrote. I have used it for years in many commercial applications, so it is quite well tested in terms of reading and writing values. The only weakness of the class is that it does not have extensive support for deleting or copying keys.

There are a few useful features in the class worth noting:

When reading a value, you can provide a default value in case the operation fails.

You can read and write objects such as CFonts, CPoints, etc. from/to the registry.

How to Use the Class

Declare a CRegistry object local to your function.

Call CRegistry::SetRootKey(HKEY hRootKey) to set the root key.

Call CRegistry::SetKey(CString strKey, BOOL bCanCreate). Pass bCanCreate=TRUE to write to the registry. Pass bCanCreate=FALSE to read from the registry.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

Share

About the Author

Bob Pittenger is founder and President of Starpoint Software Inc. He holds a B.A. degree from Miami University, M.S. and Ph.D. degrees from Purdue University, and an MBA from Xavier University. He has been programming since 1993, starting with Windows application development in C++/MFC and moving to C# and .NET around 2005 and is a .NET Microsoft Certified Professional Developer.

Bob is the author of two books:
Billionaire: How the Ultra-Rich Built Their Fortunes Through Good and Evil and What You Can Learn from Them
and
Wealthonomics: The Most Important Economic and Financial Concepts that Can Make You Rich Fast.
Visit http://www.billionairebook.net for more information.

Comments and Discussions

I hope you don't mind (and you are mentioned in it), but I took your excellent format of this class (CRegistry) and created a class that uses the nt.dll Native functions (e.g. NtCreateKey, NtDeleteKey, etc...). I did this because I have enjoyed you class for a long time and always use in apps that I write. I especially like the simplicity of it and that is why I adopted it for this new class I wrote "CNtRegistry" - link is below. Please take a look and let me know what you think?

There is a lot of added stuff in it like "Hiding Keys, Copying Keys/Values, Searching, Deleting recursively, etc...". I did this because I saw a lot of folks here asking for it.