In all seriousness, I wouldn't do it in C# - there are a number of packages out there which will do the job for you, and more importantly don't need you to install a full operating system and the .NET framework in order to restore the image as a C# solution would need you to do.
The one I use is AOMEI - it has a free version which will produce disk images and also allow you to access individual files from them if you need to. See here:
http://www.codeproject.com/Messages/5109995/Free-backup-software.aspx[
^]