Is the Win32 registry thread-safe? Is the Win32 registry thread-safe? multithreading multithreading

Is the Win32 registry thread-safe?


The registry will make sure the actions are atomic, so you don't have to synchronize it yourself.

However, if you have multiple processes / threads accessing the registry at the same time, it doesn't make any guarantees about which happens first. Only that you won't get garbled data.

Edit: Further reading, see The inability to lock someone out of the registry is a feature, not a bug.


As others have mentioned, individual operations are atomic. If you need to make a larger set of operations atomic, and you're targeting Vista or better, you can use the transactional registry support added in Vista.

Unfortunately, there is no direct managed support so you need to create wrappers.http://community.bartdesmet.net/blogs/bart/archive/2006/12/14/Windows-Vista-2D00-Introducing-TxR-in-C_2300_-_2800_Part-1_2900_.aspx shows how to P/Invoke these methods.


Windows Server 2008 also has support for transactional access to the registry. Here's the overview at MSDN. And here's a blog post announcing it with some questions and answers.