How can i force one machine to use a particular DC as its logon server?
Curiosityx is on the right track. It is all done in AD sites. To give you the correct answer you would need to give us some more information.
But assuming you wanted a single host to use a single DC, you would need to create a subnet for the IP of that machine. Create it with a 255.255.255.255 mask so it matches just that host. Assign that subnet to site containing the DC you want to use.
It other DCs are in the site you would need to either move those to other sites or move the DC to a new site and assign the subnet you have created to that instead.
This will
prefer that DC. If that DC is down the machine will try to find another DC by transversing the AD site links (using the link with the lowest cost if configured).
To stop this you would need to set the DisableNSRecordsAutoCreation registry key located in HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters on all DCs so they only registered it's SRV records for the site it is in. This of course could reduce the fault tollerance of your Domain.
i can obviously do "cmd > type set logonserver=*dcname*" but that isnt permenent, infact it changes the second i log off
I don't believe that actually works (although I've not tested it so happy to be proved wrong). I strongly suspect it will only change the environmental variable and not which DC is being used.