So what's your strategy for making code that plays nicely in both 32bit & 64bit environments?

I didn't have one, but then it turned out I had Microsoft's all along: For the last couple of years I've largely written dotNet targeted at version 2.0 unless I really need higher, using VSE running on XP (32bit) and there is no choice but to have your code built for "Any CPU". So on 32bit an app runs as 32 bit and on 64bit it runs as 64bit. If you happen to write/read the registry it's always in the same path on both architectures - no Wow6432Node magic involved.

I did however, run into a little pain (pinprick) with a compiled AutoIT app which ultimately calls a couple of CMD files, and being 32bit that runs them with the 32bit cmd.exe so any reg settings and so on you do there automagically end up redirected into that Wow6432Node. I also had one of those CMD files install a INF file, and the standard variable %11% in there which would point to system32 on a 32bit system ends up pointed at SysWOW64. [1]

Thinking about all this I still really hate the couterintuitive side of 64bit Windows i.e. the system32 folder is where the 64bit code lives and the SysWOW64 folder is where the 32bit code lives

[1] I did something completely different in this case, but you can do some workarounds like this.
if exist %systemroot%\sysnative\reg.exe (set reg="%systemroot%\sysnative\reg.exe") else (set reg=reg)
%reg% add blah blah...