E' assolutamente impossibile fare una cosa del genere in c: il c è un linguaggio compilato, quindi, ogni programma deve essere ricompilato per l's.o. specifico (es linux e windows)...
Se intendi su che windows ci troviamo allora prova in questo modo:
codice:
OSVERSIONINFO winosinfo;
winosinfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
memset(winosinfo.szCSDVersion,'\0',128);
GetVersionExA(&winosinfo);

switch(winosinfo.dwMajorVersion)
{
   case 4:
      switch(winosinfo.dwMinorVersion)
         {
         case 0:
            // Windows 95
            break;
         case 10:
            // Windows 98
            break;
         case 90:
	    // Windows ME
            break;
         }
    	break;
   case 5:
        switch(winosinfo.dwMinorVersion)
            {
          	case 0:
             	    // Windows 2000
                    break;
                case 1:
                    // Windows XP
                    break;
	        case 2:
		    // Windows 2003 Server
		    break;
	   }
	   break;
	case 6:
	   if (!winosinfo.dwMinorVersion)
              	// Windows Vista
}