(54) Title: METHOD AND SYSTEM FOR CONTROLLING EXECUTION OF COMPUTER PROGRAMS
BACKGROUND OF THE INVENTION The present invention relates to computers. More particularly, the present invention relates to 5 controlling execution of applications on a computer.
Computers are now widely found in many homes. The home computer is typically a desktop personal computer, although with greater processing power and storage capabilities, notebook computers and 10 even hand held devices may be ever more prevalent in the home. In whatever form the computer may take, the computer is a multi-purpose processing appliance that can be used by many to fulfill different needs. For instance, an adult can use the computer to maintain 15 financial or other personal information, perform online investing, perform work related tasks, etc. A school age child may use the computer for completing homework assignments, research or as a form of entertainment. Even preschoolers are being taught to use a computer
20 for educational games.
Although the computer can fulfill many needs for users of different ages, the applications stored or executed thereon are not typically appropriate for all users. In addition, the computer can be a tempting 25 distraction to children, when other activities, such as studying is desired. It is usually impossible for a parent or other guardian to monitor what the computer is being used for throughout the day. In some households, the child may even have his or her own
30 computer, for example, in his or her room. Although conveniently placed for quiet and effective studying, monitoring by the parent or guardian is highly impractical .
Password protection has been used in the past to limit access to a particular application. In yet other systems, an application could be restricted to a particular time of use. However, since new applications can be installed easily on a computer, these types of systems will not prevent a child from executing other programs, which the parent or guardian may not believe is appropriate.
There thus is an ongoing need to provide computer administrators, such as parents, guardians and teachers, the ability to control applications that are executed on a computer. Such a system would allow children to use the computer at appropriate times of the day and for appropriate subject matter without imposing continuous monitoring upon the administrator.
SUMMARY OF THE INVENTION A computer implemented method includes receiving requests related to executing a selected application; accessing a database having control information related to a computer user's ability to execute a category of applications; and providing an output indicating whether the selected application should be executed. Instructions or routines can be provided on a computer readable medium to implement the method.
A second aspect of the present invention includes a computer-implemented method that accesses a database having control information related to a computer user's ability to execute a category of applications. An output is provided indicating when an executing application should be at least hindered. Instructions or routines can be provided on a computer readable medium to implement this method.
BRIEF DESCRIPTION OF THE DRAWINGS Fig. 1 is a block diagram of an exemplary computing environment for the present invention.
Fig. 2 is a block diagram illustrating aspects of the present invention.
Fig. 3 is a flow chart illustrating exemplary steps of the present invention.
DETAILED DESCRIPTION OF THE ILLUSTRATIVE EMBODIMENTS
Prior to a detailed discussion of the present invention, an overview of an exemplary operating environment may be helpful. FIG. 1 and the related discussion provide a brief, general description of a suitable computing environment in which the invention can be implemented. Although not required, the invention will be described, at least in part, in the general context of computer-executable instructions, such as program modules, being executed by a personal computer. Generally, program modules include routine programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types . Tasks performed by the programs and modules are described below and with the aid of block diagrams and flow charts. Those skilled in the art can implement the descriptions, block diagrams and flow charts as processor executable instructions, which can be written on any form of a computer readable medium. In addition, those skilled in the art will appreciate that the invention can be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention can also be
practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules can be located in both local and remote memory storage devices .
With reference to FIG. 1, an exemplary system for implementing the invention includes a general purpose computing device in the form of a conventional personal computer 10, including a processing unit 11, a system memory 12, and a system bus 13 that couples various system components including the system memory to the processing unit 11. The system bus 13 can be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures . The system memory includes read only memory (ROM) 14 and a random access memory (RAM) 15. A basic input/output system 16 (BIOS) , containing the basic routine that helps to transfer information between elements within the personal computer 10, such as during start-up, is stored in ROM 14. The personal computer 10 further includes a hard disk drive 17 for reading from and writing to a hard disk (not shown) , a magnetic disk drive 18 for reading from or writing to a removable magnetic disk 19, and an optical disk drive 20 for reading from or writing to a removable optical disk such as a CD ROM or other optical media. The hard disk drive 17, magnetic disk drive 18, and optical disk drive 20 are connected to the system bus 13 by a hard disk drive interface 22, magnetic disk drive interface 23, and an optical drive interface 24,
respectively. The drives and the associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the personal computer 10.
Although the exemplary environment described herein employs the hard disk, the removable magnetic disk 19 and the removable optical disk 21, it should be appreciated by those skilled in the art that other types of computer readable media, which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, random access memories
(RAMs) , read only memory (ROM) , and the like, can also be used in the exemplary operating environment.
A number of program modules can be stored on the hard disk, magnetic disk 19, optical disk 21, ROM 14 or RAM 15, including an operating system 65, one or more application programs 26, other program modules 67, and program data 28. A user can enter commands and information into the personal computer 10 through input devices such as a keyboard 30, a handwriting tablet 31, a pointing device 32 and a microphone 33. Other input devices (not shown) can include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 11 through a serial port interface 36 that is coupled to the system bus 13, but can be connected by other interfaces, such as a sound card, a parallel port, a game port or a universal serial bus (USB) . A monitor 37 or other type of display device is also connected to the system bus 13 via an interface, such as a video
adapter 38. In addition to the monitor 37, personal computers typically include other peripheral output devices such as a speaker 35 and a printer (not shown) . The personal computer 10 can operate in a networked environment using logic connections to one or more remote computers, such as a remote computer 39. The remote computer 39 can be another personal computer, a server, a router, a network PC, a peer device or other network node, and typically includes many or all of the elements described above relative to the personal computer 10, although only a memory storage device 40 has been illustrated in FIG. 1. The logic connections depicted in FIG. 1 include a local area network (LAN) 41 and a wide area network (WAN) 42. Such networking environments are commonplace in offices, enterprise-wide computer network Intranets and the Internet.
When used in a LAN networking environment, the personal computer 10 is connected to the local area network 41 through a network interface or adapter 43. When used in a WAN networking environment, the personal computer 10 typically includes a modem 44 or other means for establishing communications over the wide area network 42, such as the Internet. The modem 44, which can be internal or external, is connected to the system bus 13 via the serial port interface 36. In a network environment, program modules depicted relative to the personal computer 10, or portions thereof, can be stored in the remote memory storage devices. As appreciated by those skilled in the art, the network connections shown are exemplary and other means of establishing a
communications link between the computers can be used.
Fig. 2 schematically illustrates, in block diagram form, a parental control system or module 50 for controlling execution of applications on the computer 10. Generally, in a first aspect of the present invention, the parental control module 50 receives requests 52 related to executing a selected application. Parental control module 50 accesses a database 54 located on any of the storage devices described above. The database 54 includes control information related to a computer user's ability to execute a category of applications. For instance, control information can include at least one of a time of day and a duration of execution for each of the categories of applications. Parental control module 50 provides as an output 56 an indication as to whether the selected application forming the request 52 should be executed. The output 56 can be used by the operating system of the computer 10 to permit the application to be started. In another embodiment, the application receives the output 56 and allows further operation, if permitted.
In another aspect of the present invention, parental control module 50 monitors execution of a selected application and provides as output 56 an indication when the executing application should be terminated or at least hindered in order to encourage the computer user to stop execution. Fig. 3 illustrates the general steps described above as well as other steps that can be performed in a specific embodiment. At step 60, parental control module 50 receives the request 52
related to executing a selected application. Request 52 can originate from any one of a number of sources in various computer architectures. For instance, request 52 can originate from an application currently running on the computer 10, or from other computers communicating with computer 10 through a communications link such as a modem or a network. In one typical environment, request 52 originates from the operating system used to manage resources and data flow in the computer 10. In this example, the operating system provides information indicating which application has been selected for execution. Typically, an Application Programming Interface ("API") is used to pass the application's information between the operating system and parental control module 50. APIs are well known communication mediums for passing information between applications and/or the operating system. The information can be the name of the executable file for the selected application. In other embodiments, additional information can also be provided such as the location of the application in the computer 10 (e.g. the storage device and the folder or directory where the application is stored) , or on a remote computer connected to computer 10. In the embodiment illustrated in Fig. 2, parental control module 50 communicates with an application manager module 66. In this embodiment, application manager module 66 is used to manage information stored in a database 68 related to applications that can be executed on computer 10. It should be noted that application manager module 66 is illustrated separately; however, if desired tasks performed by application manager module 66 can be
incorporated into parental control module 50.
Database 68 stores information related to applications that can be executed on computer 10. Generally, the information stored in database 68 organizes or at least categorizes the applications. For example and without limiting the present invention, applications can be categorized as entertainment applications, educational applications, multimedia applications, reference applications, educational/ entertainment applications, financial applications, etc. If desired, categories can be subdivided. For instance, entertainment applications (e.g. games, etc.) can be categorized based on content such as the level of violence depicted, or other criteria. For example, the criteria can include a rating level from a third party such as the Entertainment Software Rating Board. At step 63, application manager module 66 accesses database 68 via 69 to ascertain the category of the selected application forming request 52. Application manager module 66 provides as an output 70, the category of the selected application at step 72. Application manager module 66 can also provide a "null" value, or other selected value, if the selected application belongs to the "unknown" category. At this point, it should be mentioned that applications generally can be classified as "legacy" and "non-legacy" applications. As used herein, "legacy" refers to applications that cannot or will not honor requests from parental control module 50 to stop execution. This aspect is discussed below. In contrast,
"non-legacy" applications refer to applications that accept and honor requests to stop execution. Database 68 can store category information for both "legacy" and
"non-legacy" applications. In one embodiment, when applications are stored on computer 10, the application is "registered" with application manager module 66, wherein category information is recorded in database 68. The category information can be automatically included in database 68 upon installation of the application on computer 10. The categories can be chosen by the software developer and read from the installation data. One or more categories may be considered relevant for each application. For instance, a software developer may consider a particular application to be both entertainment and entertainment/educational. If desired, application manager module 66 or parental control module 50 can include editing routines with suitable user interfaces to allow the parent or guardian to override the initial categorizations .
It should also be noted that database 68 can also include category information for applications that are not currently stored on, or registered with, computer 10. In this manner, if computer 10 is directed to execute an application, such as another legacy application that was unknown to the parent or guardian, parental control module 50 will obtain information about the application from database 68 for use in determining whether the application should be executed. Database 68 can be periodically updated with new information about new or old applications as desired. Updates to database 68 can be through any of the mass storage devices depicted in Fig. 1, or such information can be obtained remotely and downloaded, such as from the Internet .
Referring back to Fig. 3, at step 74,
parental control module 50 accesses database 54 and obtains control information as a function of the category information obtained from database 68. As mentioned above, control information in database 54 indicates whether or not a category of applications is executable. If the category of applications is executable, parental control module 50 may also obtain current time and date information 76 (Fig. 2) from suitable resources of computer 10 in order to ascertain if the selected application forming request 52 can be executed at the present time. If desired, database 54 can store information pertaining to the total time that computer 10 has been used to execute each category of applications. Parental control module 50 can then ascertain if any time remains for executing a specific category of applications. Step 74 generally denotes examination of the control information for the category information provided at step 72.
As appreciated by those skilled in the art, control parameters in the control information can vary from category to category, using various forms. For example, without limiting the present invention, some categories may be executable at any time of the day, while certain users may never execute other applications falling in other categories. Likewise, certain categories can be designated for execution only during certain times of the week or day. In addition to, or in the alternative, other parameters, such as duration of execution in a week or a day can also be set for each category of applications and used to control execution. Based on the control information for the category corresponding to request 52, the request to execute the selected application is denied at step
76, or permitted at step 78. It should be noted that if the request is denied, communication to the user can be performed using a number of techniques. If desired, parental control module 50 can display a suitable dialogue box on the monitor 37 stating that the request has been denied and the reason for denial . If the request was denied based on an inappropriate time to execute the selected application, a suggested time that the user can return to the computer for execution can also be displayed. If desired, any or all of this information can be provided to the application forming the request 42 wherein the application displays the information to the user.
Another aspect of the present invention includes monitoring execution of a selected application and providing an output, based on the control information stored in database 54, indicating that the executing application should be terminated or at least hindered in order to encourage the computer user to stop execution. As discussed above, applications can be classified into one of two categories "legacy" and "non-legacy" . Non-legacy applications are designed to work with parental control module 50, and thus, will honor requests that the applications terminate execution. Parental control module 50 can provide the request to terminate execution using any of a number of techniques. Based on the current time, the duration of execution or other control parameters, parental control module 50 can monitor these parameters with respect to control information for the category of the application executing. When any one of the control parameters has been exceeded, parental control module 50 can provide a message request to the application to terminate
execution. The application receives the message request and informs the user that execution will be terminated with any relevant information saved for later use. In yet other non-legacy applications, parental control module 50 can assess the relevant control information and provide time information to the executing application indicating when the execution should be automatically terminated. This time information can be provided initially when permission is granted, or during application execution.
However, legacy applications may be more difficult to terminate in view that they have not been written to honor requests from parental control module 50. Nevertheless, parental control module 50 can take actions designed to at least hinder execution of the application, and thus, encourage the user to stop execution. In one embodiment, parental control module 50 can initiate temporary suspension of the application and display of a dialogue box requesting that the user terminate execution. If the user does not terminate execution within a selected time period, repeated display of the dialogue box and suspension of the executing application will frustrate the user and inhibit execution. Another technique for hindering execution includes reducing the priority level of the application in a multi-processing environment where simultaneous applications can be executed. Using this technique, the legacy application runs slower in order to encourage the user to terminate the application.
If desired, the operating system can be instructed to terminate the executing application abruptly. In view that abrupt termination can result in
loss of data, a dialogue box can be displayed warning the user that abrupt termination will occur in a selected time period, and thus in order to save relevant data, the application should be closed. In some situations, the computer user may not be in front of the monitor when the dialogue box warning of abrupt termination is displayed. Therefore, in order to prevent unnecessary loss of data, the time period before abrupt termination occurs begins with acknowledgement of the user to the warning such as by the user closing the dialogue box.
As discussed in the background section, it is common for a computer to be used by two or more individuals. In these circumstances, it is also common for some individuals to log into the computer and provide a password or other means to identify the individual to the computer. Database 54 can be organized to accommodate multiple users wherein control information related to execution of categories can be individually set for each user. In this manner, control information such as which applications are allowed to be executed, which types or rating levels of applications are allowed to be executed, when they can be executed and for how long each category of applications can be executed, is separately adjustable for each user. For example, a parent or guardian can be given full access to all applications, while a teenager is limited in content, duration and at what times during the day execution will be allowed. Some users, such as young children, may not be capable of logging into the computer and providing the necessary password. In such a case, a set of control information can be used by parental control
module 50 when a particular individual has not been identified. This allows the computer to be used by the youngest child wherein a limited set of categories are allowed. Those individuals having the ability to log in would have a unique set of control information adjusted for their needs, presumably allowing more access to executable applications. Suitable user interfaces are provided to allow the parent or guardian the ability to individually adjust the set of control information for each user. For example, if a child has performed particularly well in school, additional time can be provided to execute games on the computer.
Although the present invention has been described with reference to preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.