Basically, all DLLs listed in that reg-key are loaded when any process is started.
For more info see Working with the AppInit_DLLs registry value.
All the DLLs that are specified in this value are loaded by each Microsoft Windows-based application that is running in the current log on session.
They are usually used by malicious code (tho it doesn't have to be malicious) as a way of DLL injection, to hook functions for example. To be more precise
, AppInit DLLs are actually loaded only by the processes that link user32.dll.,as peter ferrie points out, AppInit DLLs are loaded by user32.dll after it has been loaded.
The actual registry path differs between 64bit and 32bit version of OS.
So for for 32 bit DLL on 32 bit systems the path is:
For 64 bit DLL on 64 bit system :
For for 32 bit DLL on 64 bit system:
Multiple entries are split with space or comma, and the path to the DLL must not contain any spaces for obvious reasons.
On Vista and later, the AppInit DLLs need to be signed, tho the registry value
RequireSignedAppInit_DLLs can be set to 0 which disables this requirement.