Hi folks,

I'm attempting to make a little program that runs before the Windows boot screen. The program will ask the user what programs they want started up after the OS loads. It will then take those choices and put them in a part of memory that will not be used while the OS loads. The program will quit after doing so and resume loading Windows. I will then create a service that will read that part of memory and get the choices left by the program. The service will then start the programs accordingly.

I am still new with C++ and the low level programming is still new also. I have the part where the user enters their choices:

Code:
#include <iostream.h>
#include <stdlib.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int main(int argc, char* argv[])
{
	int choice1, choice2, choice3, choice4, choice5;

	system ("color 2F");
        cout << ("   _______________________________________________________ \n");
	cout << ("  |                                                       |\n");
	cout << ("  |  What programs would you like to start-up upon boot?  |\n");
	cout << ("  |                                                       |\n");
	cout << ("  |  1. Itunes                        2. Firefox          |\n");
	cout << ("  |  3. MSN Messenger                 4. Outlook Express  |\n");
	cout << ("  |                                                       |\n");
	cout << ("  |  Enter '0' to end your selections. No letters!        |\n");
	cout << ("  |_______________________________________________________|\n\n");

	c1:
	cout << (":"); cin >> choice1;
		if (choice1 == 0) {
			choice2 = 0;
			choice3 = 0;
			choice4 = 0;
			goto end;
		}
		if (choice1 > 4) {
			cout << ("  Number too high. Try again. \n");
			goto c1;
		}

	c2:
	cout << ("?"); cin >> choice2;
		if (choice2 == 0) {
			choice3 = 0;
			choice4 = 0;
			goto end;
		}
		if (choice2 > 4) {
			cout << ("  Number too high. Try again. \n");
			goto c2;
		}

	c3:
	cout << ("?"); cin >> choice3;
		if (choice3 == 0) {
			choice4 = 0;
			goto end;
		}
		if (choice3 > 4) {
			cout << ("  Number too high. Try again. \n");
			goto c3;
		}

	c4:
	cout << ("?"); cin >> choice4;
		if (choice4 > 4) {
			cout << ("  Number too high. Try again. \n");
			goto c4;
		}

	end:

	cout << ("\n\nOK, Done. Thank-you...\n\n");

	/* Just for testing, I'm going to show what's stored for
	   the choices and I'll stop the program to let me see what
	   it displayed. */
   
	cout << choice1 << choice2 << choice3 << choice4 << ("\n\n");

	system ("pause");
}
My questions are:

1. How can i put those choice variables into memory to be used later even if the program is no longer running? How do I know where in the memory to store this info?

2. Do you have any idea how I would make my program run before the Windows boot screen? Would this still be protected-mode? Or would I have to compile this as a 16-bit real-mode program?

Any input for any of these questions is greatly appreciated.
Thanks!