Firstly I apologize for bumping this thread, but for the misinformation that is running rampant in this thread I feel it is justified.
Since it's much easier to get rid of the shortest list first, we will start with why C# is superior to C++ for this particular task: It takes less time to program a functional bot in C# than C++ (debugging in C++ is a pain in the ass). That is the only pro to choosing .NET over actual code.
Now for the part that will make you all mad:
C++ is faster (MUCH faster)
C++ isn't sandboxed
C++ can be used on any operating system (with different OS-specific API's, of course - and the problem with globalized code can be fixed easily with cross-platform frameworks such as QT by Nokia if you're concerned with a fancy GUI)
If you're doing any sort of memory reading or writing, C++ is superior since it has these fancy things called pointers. It also has support for inline assembly if you need to do any sort of low level stuff or are reversing a function and want to test pushing params to the stack to debug.
It is much easier to reverse any compiled application in .NET (C++ included), and C# is nothing BUT .NET. You can literally download a program and decompile someone else's application and view the raw source code.
The downside to C++ is that it takes a little bit of time to learn and can be exhausting to debug (I've spent HOURS debugging my code when all I was missing was a semi-colon!). However if you're committed to learning how to program in a low-level language, C++ is definitely the way to go. It's powerful, can be used in everything from console apps, server software, video games (and game hacks - which are fun as hell to make, by the way), and even native plugins for browsers (think Unity Player, Flash, DivX, etc).
I hope I've cleared some things up for you.
(Note to everyone reading this: If you feel I've provided false information in any way, shape, or form, please let me know. I try to be as unbiased as possible when giving advice to new programmers, however I personally favor C++ over ANYTHING .NET-related for the reasons stated above).