Pre .net. anyone could out a dll anywhere, "anyone" could twiddle with the registry key that located it. and many many anyones did, a lot.
Out of the box .net looks in the GAC and to be in there it must have a strong name, so you have to explicitly load the wrong one, or in the same directory as the app.
So if your problem child is a .net dll, someone has f'ed up big.
Keep Up with TechRepublic