in a word, 'no', not as you have tried it it above - there's a defined route that's taken to locate DLL's :-
- starting from the directory the Exe is located in,
- then the system directory,
- windows directory,
- current directory,
- then directories listed in the PATH variable
the one way to short circuit the search route I mention is to use the SetDllDirectory, which means a P/Invoke
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool SetDllDirectory(string lpPathName);
All that being said, some corporates block things being run from USB drives, for security reasons
[edit] I'd have issues running things from a usb for lots of reasons - I'd want to make sure it was there for a start. Why dont you set Environment.CurrentDirectory 'down' to the DLL directory you indicate and then set it back before your program exits ? [/edit]
[edit2... and as SAK points out, and I'll paraphrase, 'just because you can, doesnt mean you should' [/edit2]