I've struggled finding a solution to this problem for years. Neither registry changes or LMHOSTS modifications have been reliable - finally I think I've found a solution that works, however, it is risky at best so use at your discretion.
Simply manipulating the HOSTS file (%WINDIR%\System32\Drivers\etc\hosts) to forcibly point all other domain controllers to the domain controller of choice, when the NIC is initializing (presumably as TCP/IP is loaded up) will point your client machine at a different DC.
For example: If my PC keeps pointing at DC1-SITE1 (you can check by running nltest /dsgetdc:DOMAIN
), and I want to point at DC16-SITE3, I first find out all the domain controllers in my Site/Domain by running:
nltest /dclist:DOMAIN
Then, I simply point all the other domain controllers at the one I want in the HOSTS file. If my DC16-SITE3 IP is 10.1.1.1, then this would look like this:
10.1.1.1 DC1-SITE1
10.1.1.1 DC1-SITE2
10.1.1.1 DC2-SITE2
10.1.1.1 DC3-SITE10
...
and so forth.
Then, go into your network connections (Start -> Run -> ncpa.cpl), Right-click & "Disable" the NIC, then re-enable it. Re-run nltest /dsgetdc:DOMAIN
and voila. If you get a different domain controller connection, check to make sure it was repointed in HOSTS.
Since this would probably cause side-effects, I've only used to temporarily test if problematic behavior is consistent across different domain controllers - then I revert the HOSTS file back to normal as soon as possible.