I recognized a need for this early on (not just with DLLs but data and other local files), so I built a "run once" utility into our LISP startup sequence. It looks for certain folders and loads the LSP files it finds in them. As it loads them, it also adds the file to a permanent tracking list so it won't load it again in the future. For updating DLLs, I have the LSP call a simple DOS-box EXE which reads a centralized XML manifest for which DLL files should be copied where, and which build version should be present. This way there isn't a boatload of file movement over the network, things only update when I want them to, and if a computer misses a few they get applied the next time AutoCAD is used.