Hello thewizard,
What is the step by step, best, safest way to accomplish this?
1. Use latest stable release of "GParted Live"
2. Backup everything, you don't want to loose, if anything goes wrong !
3. To Grow C from 18 GiB to 40 GiB, you need 22 GiB of unallocated space at the upper border of C ( = between C and D). I assume, that you don't want to get any partition filled to the last Byte, and therefore need at least two partitions to gain the needed space. My suggestion would be 11 GiB from D and 11 GiB from E, because they are next to C. This would simplify your action.
4. Shrink E (move the lower border upwards to the left) from 68 GiB to 57 GiB size (align to cylinder border) : unallocated space 11 GiB between D and E
5. Shrink (from the lower border; 53 GiB -> 42 GiB) and move D (11 GiB) to get adjacent to E (align to cylinder border) : unallocated space 22 GiB between C and D
6. Grow C ( upper border ) 22GiB ; uncheck "align to cylinder border" !
Do one step after the other, run Windows "chkdsk /f /r" after each step, if NTFS filesystem is involved. Before growing C, delete registry key "MountedDevices" and system file "pagefile.sys" (with GParted) or select "clear pagefile.sys at shutdown" in Windows. Be sure, that your system is not "hibernating", but "shutdown". This is an issue for "Vista" !
Good luck
cmdr