Link with -lshell32 and -ladvapi32 on Win32. SHGetSpecialFolderPath is in Shell32.dll and the RegOpenKey (et al) and CryptGenRandom (et al) functions are in -ladvapi32.dll. MinGW is "nice" and brings those in automatically, but specify them explicitly for other tool chains.