Is it possible to restrict a .NET executable to a specific machine somehow so that it can only be run on that machine.
Out of the box - no.
You can try generating a machine signature during installation and lock your application to not start when the signature file is not present or is not valid for this particular machine.