See the question and my original answer on StackOverflow

All Visual Studio setup resides in the registry, in a key like this:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]

Version can be like "9.0" (VS 2008), "10.0" (VS 2010), "11.0" (VS 2012), but it can also be anything else because Visual Studio can be started with a custom 'hive' key (see the /RootSuffix parameter of the devenv.exe command line).

So, for normal operation, project guids are located here:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Projects

Projects in Visual Studio can be standard projects (C#, VB.NET, etc.) or aggregate projects (the WPF "flavor" over C# or VB.NET).

In general, projects have a "Package" key that contains the guid of the Visual Studio Package (the binaries) containing the type of project.

Packages descriptions are to be found here:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\[Version]\Packages

Native packages (C#, VB.NET, C++, ...) are implemented as native COM servers and the path is defined in the InprocServer32 key. Managed packages define MSCOREE.DLL as the InprocServer32 key and there is also a CodeBase key is the package is not in the GAC and only an Assembly key if the package is in the GAC.