¿Cómo leer / escribir ubicaciones de la biblioteca de Windows 7?

Introducción

En Windows 7 tienes algunas carpetas especiales para documentos, imágenes, música, etc. llamadas bibliotecas.

Si no los conoce, básicamente cada carpeta de la Biblioteca puede contener ubicaciones (rutas) que son básicamente accesos directos para cada Biblioteca.

Algunos ejemplos:

Documents (Library)

E: \ Personal \ Documentos(Location)F: \ Backups \ Documents(Location)

Music (Library)

E: \ Media \ Música \ Álbumes(Location)E: \ Media \ Música \ Singles(Location)

Pictures (Library)

E: \ Media \ Fotos(Location)

Cuando haga clic en cualquiera de estas carpetas de la Biblioteca desde el Explorador de Windows o el menú Inicio, el Explorador de Windows se mostrará con las Ubicaciones definidas dentro de esa Biblioteca.

Tarea

Lo que necesito poder hacer es leer las Ubicaciones para cada tipo de biblioteca y poder escribir (actualizar) la Biblioteca con mis propias Ubicaciones. Descubrí que las bibliotecas se almacenan en la carpeta AppData del usuario de esta manera:

C:\Users\SOMEUSER\AppData\Roaming\Microsoft\Windows\Libraries

Estas bibliotecas son este tipo de archivo:Biblioteca (.library-ms) - Si hace clic derecho en uno y selecciona Propiedades, en la pestaña Biblioteca, puede ver las ubicaciones de la Biblioteca asociadas con esa Biblioteca.

No veo una forma de extraerlos y ponerlos, por ejemplo, en una TStringList para editar en Delphi. Me pregunté si estas Ubicaciones de la Biblioteca en realidad estaban almacenadas en el Registro de Windows, por lo que con algunas investigaciones de Google encontré estas rutas:

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell FoldersHKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell Folders

Pero, de nuevo, no veo la lista real de ubicaciones de bibliotecas.

Entonces, ¿cómo puedo leer la lista de Ubicaciones dentro de un archivo de Biblioteca en Delphi, agregarlas a un Cuadro de lista o Lista de lista de canales, editar las entradas y luego volver a escribir los cambios? El solo hecho de poder extraer las rutas de ubicación de la biblioteca sería un comienzo.

¡Tengo la sensación de que esta será una de esas preguntas que tiene una respuesta simple que parece no poder encontrar!

Respuestas a la pregunta(2)

Su respuesta a la pregunta