The existing answers cover a lot of reasons, but I thought I mentioned one more thing.
I use the registry to store system-wide settings. That is, when 2 or more programs need the same settings. In other words, a parameter used by several programs.
In all other cases, I use a local configuration file, which is either on the same path as the executable, or one level down (in the configuration directory). The reasons have already been discussed in other answers (portable, you can edit using a text editor, etc.).
Why install system settings in the registry? Well, I found that if the parameter is shared, but you use local configuration files, you duplicate the settings. This may mean that you need to change the setting in several places.
For example, let's say program A and program B point to the same database. You may have a "system" registry setting for the connection string. If you want to specify a different database, you can change the connection string in one place, and both programs will run in another database.
Note. It makes no sense to use the registry in this way if two or more programs do not need to use the same values. For example, program A and program B, which require a database connection string, may be the same, but not always. For example, I want program B to use the test database now, but program A should continue to work with the production database.
In the example above, you may have a local setting overriding system-wide settings, but it may become too complex for simple tasks.
Class Skeleton Jan 21 '16 at 10:25 2016-01-21 10:25
source share