1) Don't hard code any
path in your program. Not even in setup. Let the user choose where to put program files. That applies to databases, too.
The benefit is that the user can choose a path that he has write permissions to.
2) There is software that uses a CD in the CD drive to check if you have a paid instance or if you simply copied the data off of someone's PC. The easiest way to do this is to store the path to a file on the CD during installation and check upon program start, if that file is accessible.
There are more sophisticated ways, but all of them are as doomed to fail just as the easy one is when some bloke feels has enough energy and intention to circumvent your measures.
3) You can run software directly from CD without installing. But you cannot store any data there. If you want to (like in your gaming example) you have to have access to a writable medium.
4) For autorun functionality, just place a file named autorun.inf
in the root directory of your distribution medium and let it contain
action=Descriptive text to let user know what will happen when running your software