There is no such concept as "runtime directory". There is no such concept as "linking to a DLL in an environment variable". There is no one predefined universal way of saying where to look for a DLL (I'm talking about native DLLs; .NET assemblies can be put in the well-defined Assembly Cache.)
This is one of the reasons why we have so called "
DLL hell":
http://en.wikipedia.org/wiki/DLL_hell[
^].
Some, say, Linux
distro have strict rules for reusing components and their registration the way all installations can find out what to install and what not, but not Windows.
Now, environment variables are sometimes used for such purpose, but this way is purely application-dependent. In principle, you can develop your own system for the group of applications sharing some DLLs. I think using environment variables is a pretty bad approach; it is mostly used by legacy software (possibly created when typical computer systems had much less applications then these days) and just contaminates the system. For some background, please see:
http://en.wikipedia.org/wiki/Environment_variable[
^].
—SA