Abstract:
A computer system having a hard disk drive including a product key input program for writing a product key of an operating system (OS) program in a CMOS RAM, and a CD-ROM drive including a recovery program for recovering an OS program and application programs to an initial state. Should a defect of the hard disk drive or critical error of the OS program occur, the OS program may need be reinstalled or a recovery program may be run to recover the initial states of the OS program and the application programs. The product key stored in the CMOS RAM will be used during the recovery or re-install process, so that the user does not have to manually input the product key again.

Description:
CLAIM OF PRIORITY 
   This application makes reference to, incorporates the same herein, and claims all benefits accruing under 35 U.S.C §119 from an application entitled Computer System And Method Capable Of Automatically Inputting Product Key Of A Software Program Upon Reinstalling The Program Thereon earlier filed in the Korean Industrial Property Office on 23 Nov. 1999, and there duly assigned Serial No. 99-52232 by that Office. 
   FIELD OF THE INVENTION 
   The present invention relates to a computer system and, more particularly, to a computer system capable of automatically inputting a product key of a software program upon reinstalling the program in the computer system and method of reinstalling a software program. 
   BACKGROUND OF THE INVENTION 
   Every general-purpose computer has an operating system to provide a user interface between a user and the computer and to run other programs on the computer. Operating system programs provide a software platform on top of which other programs, called application programs, are able to run, and perform basic tasks, such as recognizing an input from a keyboard, sending an output to a display apparatus, keeping track of files and directories on disks, and controlling peripheral devices such as disk drives and printers. 
   Currently, most PC manufacturers provide a bundle of basic and essential software programs already installed in the computers being offered for sale, for user&#39;s convenience. Thus, upon purchasing a new computer, a user has no need to install such programs, and all that is required is for the user to register the installed programs with the programs&#39; manufacturers. 
   If a user bought a computer operated with a Windows® 98 operating system program, he may first add information to some part of the program to his computer if necessary and compose the program to his environment, such as inscription of his name, keyboard composition, time setting, and so on, to complete the installation of the program. 
   In such a user program install process, a user must correctly input a product key of the program into product key input window, otherwise the program cannot be completely installed and will not operate until the correct product key is input. In other software programs, which must be completely installed by the user, the product key, also known as the product ID, product certificate information or serial number, must be correctly entered before any part of the program can be installed. 
   Current software programs, however, have complex product key structures (e.g., the Windows® 98 program has a product key of 25 characters), thus there is a high probability that an error occurs in inputting the product key unless a user carefully checks each character of a product key. Also, since software program product keys are typically stored in a specific area of a hard disk in the hard disk drive, should the user have to reinstall the software programs on his/her computer due to a software failure or due to damage to a portion of the hard disk, etc, then the user must manually input the product keys again for the software being reinstalled. However, if the user cannot find the authentication certificate of a program and has no record of the product key of the program, he cannot reinstall the software. Moreover, if the operating system software had to be reinstalled, or a disk recovery operation needed to be performed, and the user had no record of the product key for the operating system software, the computer would be inoperable until either new software was purchased or, if the software was properly registered, the manufacturer could provide the necessary information to the user. 
   SUMMARY OF THE INVENTION 
   Therefore, an object of the present invention is to provide computer systems and methods capable of improving product key retention reliability. 
   It is another object of the present invention to provide computer systems and methods capable of conveniently reinstalling software programs that require product key input. 
   According to an aspect of the present invention, a computer system having an operating system program containing product key information includes a first storage step for storing the operating system program, a second storage step for storing the product key information of the operating system program when the operating system program is first installed in the first storage step, a write means for writing the product key information in the second storage step, and input means for reading out the product key information from the memory means and inputting the read-out information in an information input window for product authentication of the operating system program when a reinstalled operating system program is matched with an operating system program corresponding to the product key information written in the memory means. 
   According to another aspect of the present invention, a computer system has a central processing unit (CPU), a main memory, a BIOS ROM, and an auxiliary memory for storing information set by the BIOS ROM, and uses an operating system program containing product key information. A method of writing the product key information in the auxiliary memory when the operating system program is installed first comprises the steps of making a user manually input the product key information corresponding to a procedure of installing the operating system program; executing the product key information writing program; and writing the manually input product key information into the auxiliary memory. 
   According to further another aspect of the present invention, a computer system has an operating system program containing product key information and comprising a central processing unit (CPU), a main memory, an auxiliary memory for storing the product key information, and at least one auxiliary memory device. A method of automatically inputting the product key information manually input by a user when the operating system program is first installed comprises the steps of reading out the product key information form the auxiliary memory; checking whether the read-out product key information is matched with product key information of an operating system program that will be reinstalled; and, if matched, automatically inputting the product key information in a product key information input window of the operating system program. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
     A more complete appreciation of the present invention, and many of the attendant advantages thereof, will become readily apparent as the same becomes better understood by reference to the following detailed description when considered in conjunction with the accompanying drawings in which like reference symbols indicate the same or similar components, wherein: 
       FIG. 1  is a perspective view showing a computer system according to the present invention; 
       FIG. 2  shows a product key input window displayed on a display screen of a computer system upon installing a software program that requires product key input; 
       FIG. 3  is a block diagram showing a circuit configuration of an embodiment of a computer system of  FIG. 1 ; 
       FIG. 4  shows a storage region of the CMOS RAM shown in  FIG. 3 ; 
       FIG. 5  shows a format of a program install flag according to the present invention; 
       FIG. 6  shows a first format of a product key code according to the present invention; 
       FIG. 7  shows a second format of the product key code according to the present invention; 
       FIG. 8  shows a code table for use with the code format of  FIG. 7 ; 
       FIG. 9  shows a third format of the product key code according to the present invention; 
       FIG. 10  shows a code table for use with the code format of  FIG. 9 ; 
       FIG. 11  is a flowchart showing a program install process according to the present invention; and 
       FIG. 12  is a flowchart showing a program re-install process according to the present invention. 
   

   DESCRIPTION OF THE PREFERRED EMBODIMENT 
     FIG. 1  shows a computer system  100  according to the present invention, which comprises a system unit  90 , a display device  110 , an alphanumeric input device  120  such as a keyboard, and a point device  130  such as a mouse. The system unit  90  is equipped with one or more hard disk drives (HDDs)  140  (and  144  of  FIG. 3 ), a compact disk read only memory (CD-ROM) drive  150 , a floppy disk drive (FDD)  170 , and other mass storage devices such as a digital versatile disk (DVD) player (not shown). 
   Also, the computer system  100  contains a bundle of software programs including an essential part of an operating system (OS) program and other application programs, all of which are installed by a computer manufacturer or user and stored in the hard disk drive  140 . 
   A commercial software program, such as a Windows® OS program, is usually provided with a manual  10  including an authentication certificate for the program. For example, the authentication certificate of a Windows® 98 OS program contains a product key  12  printed thereon. Additionally, the product key may be printed on a label (not shown) attached to the case  161  for compact disk  160  having the Windows® 98 OS program stored thereon. A product key  12  of a Windows® 98 OS program is composed of 25 characters. 
     FIG. 2  shows a product key input screen  20  displayed on a display screen of display device  110  upon installing a software program that requires the user to input the product key. In such an installation process, it is required to correctly input a product key  12  of the program in a product key input window  22  of the product key input screen  20 . 
     FIG. 3  shows a circuit configuration of the computer system  100  as shown in  FIG. 1 . Referring to  FIG. 3 , the computer system  100  includes a central processing unit (CPU)  102 , a main (RAM) memory  104 , a basic input output system (BIOS) ROM  106 , a complementary metal oxide semiconductor (CMOS) random access memory (RAM)  108  for BIOS setup, a video controller  112 , an input/output (I/O) controller  114 , an intelligent or integrated drive electronics (IDE) controller  116 , and an FDD controller  118 , all of which are coupled to a bus such as a processor bus, a peripheral component interconnect (PCI) bus, an industrial standard architecture (ISA) bus, or a system management (SM) bus. 
   I/O controller  114  is coupled to the alphanumeric input device  120  such as a keyboard and to the pointing device  130  such as a mouse. IDE controller  116  is coupled to one or more hard disk drives (HDDs)  140  and  144 . And, FDD controller  118  is coupled to the FDD  170 . 
   BIOS ROM  106  stores a BIOS program that controls the booting operation of the computer system using HDD  140  or CD-ROM  160  in accordance with the information stored in CMOS RAM  108 . 
   As is well known, although the CMOS RAM  108  is a volatile memory, it is operated by a battery and thus acts like a non-volatile memory. That is, the CMOS RAM  108  always retains the BIOS setup information without loss of the information upon system power-off. 
   The computer system  100  also includes a product key input program installed by the manufacturer and stored in the HDD  140 . The product key input program writes a product key of a software program into the CMOS RAM  108  used for BIOS setup of the computer  100 . The product key input program preferably is installed when an OS program is installed for the first time. 
   The system  100  further includes a system recovery CD-ROM  160  that contains a system recovery program for the recovery of the software programs stored in the hard disk drive  140 . When OS and application programs of the computer  100  become defective, the system recovery program restores those defective programs to their original installation states. According to the present invention, the recovery program automatically writes a product key stored in the CMOS RAM  108  into a product key window  22  when a program is reinstalled. 
   In the system memory map, the CMOS RAM  108  corresponds to I/O ports  70   h - 73   h . The ports  70   h  and  71   h  are the IBM® personal computer standard CMOS RAM ports, and the other ports  72   h  and  73   h  are additional ports according to the present invention. The port  72   h  is used to store an offset value of a location of the CMOS RAM  108  that is subjected to a read or write operation. A data item is read from or written into the location indicated by the offset value via the port  73   h . That is, the additional ports  72   h  and  73   h  serve as additional index and data ports of the CMOS RAM  108 , respectively. 
   For example, assuming that an offset value is stored in a storage location  38   h  of the CMOS RAM  108 , a processor, such as the CPU  102 , reads a data item corresponding to the offset value from the CMOS RAM  108  as shown in the following Table 1. 
   
     
       
             
             
             
             
             
             
           
         
             
                 
               TABLE 1 
             
             
                 
                 
             
           
           
             
                 
               MOV 
               AL, 
               38h ; 
               (38h) ? 
               AL 
             
             
                 
               OUT 
               72h, 
               AL ; 
               (AL) ? 
               72h 
             
             
                 
               IN 
               AL, 
               73h ; 
               (73h) ? 
               AL 
             
             
                 
                 
             
           
        
       
     
   
   First, a content of location  38   h  (i.e., an offset value) is moved into a register AL in the processor. The processor then writes the offset value stored in its register AL into the index port  72   h  of the CMOS RAM  108  so that a data item stored in a CMOS RAM location corresponding to the offset value is read out and stored in the data port  73   h  of the CMOS RAM  108 . Thereafter, the processor reads the data item from the data port  73   h  and stores it into its register AL. In this manner, a product key of an software program such as an OS program, stored in the CMOS RAM  108 , can be read out from a specific area thereof under the control of the recovery program. 
   In the computer system  100 , HDDs  140  and  144  act, respectively, as a primary device containing at least one OS program for system booting and a secondary device for optional functions. While the primary HDD  140  stores an OS program  142  and application software programs, the secondary HDD  144  stores a copy version  146  of the recovery program  162  contained in the recovery CD-ROM  160 . The copied program  162  is used to restore the OS and application programs to their initial installation states. 
   CD-ROM drive  150  can be used as a boot device, like HDD  140 . Also, when a software program fails, the CD-ROM drive  150  can directly recover or reinstall the programs using the CD-ROM  160 . At this time, the CD-ROM drive  150  reads a product key of the software program from CMOS RAM  108 , and then automatically inputs it into a product key input window  22  produced by the CD-ROM  160  upon reinstallation of the defective software program. 
     FIG. 4  shows a storage region  180  of the CMOS RAM  108  shown in  FIG. 3 . Referring to  FIG. 4 , the storage region  180  of CMOS RAM  108  includes BIOS areas  182  and  194 , a checksum area  184 , a program install flag area  186 , a product key area  188 , a recovery CD booting menu area  190 , and a recovery mode information area  192 . 
   The BIOS areas  182  (00h-DFh) and  194  (FEh-FFh) are available to a BIOS only and cannot be employed for other use. 
   The checksum area  184  (E0h) is used to determine whether a product key written into the CMOS RAM  108  is correct by checking whether a result of summing up contents of the product key storage area  188  with contents of the program install flag area  186  by bytes is zero (‘0’). 
   The program install flag area  186  (E1h-E2h) is used for indicating which program is being installed. In other words, a product key presently being stored in the CMOS RAM  108  is provided for which program. 
   The recovery CD booting menu area  190  (FCh) stores information about the boot device that is determined by BIOS CMOS setup, as shown in Table 2. 
   
     
       
             
             
             
           
         
             
                 
               TABLE 2 
             
             
                 
                 
             
             
                 
               Setting Code 
               Boot Device 
             
             
                 
                 
             
           
           
             
                 
               1 
               FDD 
             
             
                 
               2 
               HDD 
             
             
                 
               3 
               CD-ROM drive 
             
             
                 
               4 
               PCMCIA device 
             
             
                 
               5 
               USB device 
             
             
                 
               6 
               Embedded Network device 
             
             
                 
                 
             
           
        
       
     
   
   The recovery mode information area  192  (FDh) is used to store information about functions that will be carried out after system booting using the recovery CD-ROM  160 , in which the information is stored by bytes. As shown in Table 3, the area  192  determines whether the system  100  will be restored to its initial state or only an OS program will be installed. 
   
     
       
             
             
             
           
         
             
                 
               TABLE 3 
             
             
                 
                 
             
             
                 
               Setting Code 
               Contents 
             
             
                 
                 
             
           
           
             
                 
               0 
               Restore System To Initial State 
             
             
                 
               1 
               Installing Only an OS Program 
             
             
                 
                 
             
           
        
       
     
   
   The product key input storage area  188  (E3h-FBh) preferably has a 25-byte storage size and each character of the product key is preferably represented by an 8-bit ASCII code. However, area  188  may have various sizes enough to retain all the product key characters of the programs installed in the system  100 , and each character may be represented by a 6-bit code, a 5-bit code, or other codes defined by computer makers in accordance with the character numbers of product keys. 
     FIG. 5  shows a format of a program install flag  186   a  according to the present invention. Referring to  FIG. 5 , the program install flag  186   a  is an 8-bit code. In  FIG. 5 , X symbols mean ‘don&#39;t care’ values, i.e., it doesn&#39;t matter if each bit of 4-bit codes has any of the hex values 0h-Fh. The lower 4-bit portion, bit 0 -bit 3 , of the flag  186   a  indicates the types of software programs installed such as Windows® OS programs, or other application programs. For example, the lower bit portion of ‘0h’ indicates that no program is installed, ‘1h’ indicates that Windows® 98 is installed, and ‘2h’ indicates that Windows® 98 SE is installed. the upper 4-bit portion, bit 4 -bit 7 , of the flag  186   a  indicates the bit formats of the product keys. For example, the upper bit portion of ‘0h’ indicates an eight-bit format, ‘1h’ indicates a 6-bit format, and ‘2h’ indicates a 5-bit format. For example, when a Windows® 98 SE OS program is installed, each character of the OS program&#39;s product key is preferably encoded into 8 bits with lower 4 bits of ‘2h’ and upper 4 bits of ‘0h’. 
     FIG. 6  shows an 8-bit format  188   a  of a product key code according to the present invention. As shown in  FIG. 6 , characters of a product key of ‘43 . . . HBB’ are encoded into 8-bit ASCII codes, respectively, and then are stored in the product key area  188  (E3h-FBh) of the CMOS RAM  108 . For example, the first character B of ASCII code ‘01000010’ is stored at storage location E3h, and the last character 4 of ASCII code ‘00110100’ is stored at location FBh. 
     FIG. 7  shows a 6-bit format  188   b  of the product key code, and  FIG. 8  shows a code table  200  for use with the code format  188   b . Referring to  FIG. 7 , each character code has 2 higher-order bits TH and 4 lower-order bits FL. For example, the ASCII character ‘A’ is represented by a 6-bit code ‘010001’ in accordance with the code table of  FIG. 8 . This format  188   b  permits representing the product key having a maximum number of 32 ASCII characters as 24 bytes using a compress conversion process. That is, as shown in  FIG. 7 , an example of 4 characters are encoded into 3 bytes using the code table  200  of  FIG. 8 . A 6-bit code of a character is encoded by subtracting 30h from the value of a corresponding ASCII code so that the value of the 6-bit code is in a range of 00h-3Fh. For Example, the ASCII character ‘Z’ has a hex value of 5Ah; subtracting 30h from 5Ah results in a hex value 2Ah; and the binary value of 2Ah is 00101010. Thus the 6-bit code of the ASCII character ‘Z’ is 101010. In limiting the 6-bit code to a range of 00h-3Fh (binary values 000000˜111111) the product key may include the ASCII characters shown in  FIG. 8  with the reservation area being available for the ASCII characters (‘ and a˜o). 
     FIG. 9  shows a 5-bit format  188   c  of the product key code, and  FIG. 10  shows a code table  210  for use with the code format  188   c . Referring to  FIG. 9 , each character code has 1 higher-order bit OH and 4 lower-order bits FL. For example, the ASCII character ‘Y’ is represented by a 5-bit code ‘10000’ in accordance with the code table of  FIG. 10 . This format  188   c  allows 3 characters to be encoded into 2 bytes using the code table  210  of  FIG. 10  and the compress conversion process of  FIG. 9 , so that it can represent a product key having up to 40 ASCII characters. 
     FIG. 11  is a flowchart showing a program install process according to the present invention. For convenience of explanation, the process of  FIG. 11  will be described using a specific example, i.e., a user install process of an OS program, such as one of the Windows® family, however, it should be understood that the inventive concept of the present invention is applicable to installation of other software programs. 
   As described earlier in the background section of this specification, most PC makers provide computers installed with a bundle of basic and essential software programs. Thus, upon purchasing a new computer with an OS program and upon turning on the computer, S 220 , a user may be required to first add some part of the OS program to his computer such as registering user information S 222 . 
   Thereafter, the user may have to input a product key of the OS program, S 224 , which is stored in a specific area of HDD  140 , so that the installation of the OS program continues, S 226 . At this time, a processor, such as CPU  102 , executes the product key input program stored in the HDD  140 , S 228  so that the product key is read out from the HDD  140  and is written into the CMOS RAM  108 , S 230 . After completion of writing the product key into the CMOS RAM  108 , the key input program stored in the HDD  140  is automatically uninstalled stored from the HDD  140 , since it is no longer needed, S 232 . At this time, the installation of the OS program may not be fully complete, so in step S 234 , the OS program continues to be installed until finished. 
     FIG. 12  is a flowchart showing a program recovery (or re-install) process according to the present invention. Referring to  FIG. 12 , when the OS program stored in the HDD  140  becomes defective, first, a processor, such as CPU  102 , executes the system recovery program  162  stored in the system recovery CD-ROM  160  by using the CD-ROM drive  150 , or system recovery program  146  stored in the HDD  144 , in order to restore the defective program to its original installation state, S 240 . Next, the processor reads out the product key of the defective OS program from the CMOS RAM  108 , S 242 . 
   After a checksum of the read-out product key is checked, S 244 , to identify the correctness of the read-out data, it is determined whether or not the read-out product key is matched with the product key of the OS program, S 246 , stored in the system recovery program ( 162  or  146 ). If so, the read-out product key is input to a product key input window  22  for reinstallation of the OS program, S 248 , but if not, the processor instructs the user to input the product key of the OS program, S 250 . 
   The foregoing description of the embodiments of the present invention has been presented for purposes of illustration and description. It is not intended to limit the present invention to the embodiments disclosed, and obviously many modifications and variations are possible in light of the above teachings.