I've dealt with this issue a few times, mostly with various Hyper-V VM's. I boot off a Parted Magic CD then use GParted. Definitely back up first, but I've done this with at least 5 systems with no issues. Do a Bare Metal Backup first anyway!
When you open GParted, you'll notice that it has three entries for every partition:
1. Space Before Partition
2. Space of Partition
3. Space After Partition
So what you need to do is first modify the "last" partition, so that the "Space Before Partition" is larger (either by reducing the size of the partition or by taking off unallocated space from the end).
At that point, I would reboot back into Windows to make sure everything is peachy. Run a chkdsk on this resized/changed partition just to be safe.
Then, boot back into GParted and you can now expand the 2nd to last partition the same way. If this is the c: drive, then this is your last step and you can just expand the c: drive, reboot into windows, chkdsk, and you're on your way.