I just have a custom batch-file (well, one for each way) that switches the SDLs how I want it, on the odd occasion I might want to Hack a bit (just to play on a backup save¹ to plan something out before doing it the long way).
Having myself having manually ensured I have <SDLFile name>.dll.orig and <SDLFile name>.dll.hack (copies of the <SDLFile name>.dll. from both vanilla and the Hack version) at the point I first introduce a new vanilla install to the appropriate DFHack download, the HACK.BAT or BACK.BAT works according to the intention.
1) It checks that there's both .hack and .orig files (overkill, but failing if either is missing is just good practice,
2) It deletes the current .dll version, whichever it is (nothing to stop me re-applying HACK after HACK, or the other),
2a) ...and then fails itself if it still finds it (again, precautionary - noting that I've not bothered to check if it was there to be deleted, though),
3) It copies the chosen nuanced version with the un-nuanced usable name,
3a) ...and fails/warns if a subsequent check doesn't find that new version.
There's some additional little branches (and there could be more, to check the actually integrity and identity of the files, say; perhaps I could even "(H|B)ACK.BAT -register" to save me the onetime manual process on a new install?) and it's what I imagine the LNP does (in essence) for all kinds of activate/deactivate options at dir/file/config levels. Except I know what I want, and can do it for myself, so I do.
But horses for courses.
¹ For which I have a slightly more complex embark/seasonal-save swapping in/out batch file, too, that acts on savefile directories in an equivalent manner