You say you copied the library to the user.lib folder, but did you rename the VIs? If not, LabVIEW will load the first VI it finds with the name it's looking for when you load a higher-level VI that calls one of these driver VIs, regardless of the underlying code. Normally the search path is user.lib before instr.lib so it would find those first. Your statement that when you make a change to the driver in user.lib the original driver in instr.lib is also changed doesn't make much sense. That sound like automagic to me, and LabVIEW doesn't do this kind of automagic. At least, none that I've ever seen. If you open the vi from the library in user.lib directly and make a change to it and save it, then it would update only that library, not the one that's in the instr.lib folder. If, however, you double-clicked the driver VI from the block diagram of a parent VI, then which VI got opened depended on which one LabVIEW found first. Is it possible that this is what you're seeing?