In the drawings:
a-c are block diagrams of a system for running an application from a removable medium in accordance with some embodiments of the invention; and
Off-the-shelf software is typically accompanied by installation software that must be run before the application can be launched. Typically the installation software copies files and data onto the computer on which the software will run. The installation software may also add or alter configuration settings and registry values so that the application can run. In accordance with embodiments of the invention, the off-the-shelf software can be run from a removable medium without installing the software onto the machine, without modifying the off-the-shelf software. In some embodiments of the invention, the state of the computer after the application is run is unchanged by the running of the application. That is, any change in state that occurs while the application is running is completely transient and results in no changes to any persisted (permanent or saved) files on the computer. In some embodiments of the invention, files created or modified during execution of the application that is not installed on the computer but is run from the removable medium, are saved to the removable media. In some embodiments of the invention, files created or modified during execution of the not-installed application are saved to a specified area of the computer's file system.
Removable media include removable disks, CD ROMS, DVDs, USB keys, flash memory devices, flash drives, pen drives, chip sticks, thumb drives, remote file shares, network attached storage and other such devices not yet known or developed. To make the off-the-shelf software able to be run without installation and without leaving application-associated state on the computer, the installation software is run once for initialization purposes and the values set by the installation software are saved on the removable medium. This process is referred to as provisioning the removable medium. Provisioning the removable medium may occur once to create a master or may occur the first time the removable medium is inserted into or other connected to any computer. Alternatively, provisioning may occur the first time the removable disk is inserted into a particular computer. When the removable medium is inserted into the computer on which the application will be run, an application silo is created. The file system exposed to the application silo is a view which includes both the entries in the computer's file system or a subset thereof, and the files on the removable medium. The registry exposed to the application silo is a view which includes both the entries in the computer's registry or a subset thereof and the registry values on the removable medium. Thus, the application silo acts as an isolated execution environment that functions like a regular system to the application. (For example, if the application is an application capable of running on a machine that has the WINDOWS operating system installed on it, the application silo functions as if it were a regular WINDOWS system to the application.) The silo restricts writes to the computer's file system and registry so that processes running in the silo are only able to modify selected portions of the file system and registry but the operating system provides a silo-specific view of the file system and registry to the processes running in the silo so that the processes running in the silo “think” they have full write access to the system file system and registry. The silo does not have its own instance of the operating system.
A silo is an intra-operating system isolation/containment mechanism that provides for the isolation of a process running on a computer. The silo enables the controlled sharing of some files and restricts access to other files by creating a view of the file system for the process running in the silo. The view appears to a process running in the silo to be a single directory which is the union of two physical file system directories, the system file system and the file system files on the removable medium. That is, the files available to an application depend on the files the application “sees” and the file system that an application running in a silo “sees” is a view that merges the system file system and the file system files on the removable medium.
Similarly, the silo controls sharing and restricted access to the entries in the registry by creating a view of the registry for the process running in the silo. The registry view appears to a process running in the silo to be a single registry which is the union of two or more physical registries, the system registry and the registry on the removable medium.
Once the application starts up in the application silo, any changes to system configuration and/or system settings are written to the private copy of these files that exist on the removable medium and which typically are associated with and belong to the application on the removable medium. Selected access to areas of the system file system (e.g., to the My Documents directory) can optionally be given to the application. When the application exits and the removable medium is removed from the computer, the silo is deleted. Any changes to system configuration and/or system settings can be written back to the application private store on the removable medium or may be discarded.
In some embodiments of the invention, when a removable medium is inserted into the computer, the application is run in a silo which is sandboxed or isolated from the rest of the applications running on the machine. A sandbox is created by creating a silo, merging the registry elements on the removable medium with a read-only view of the machine registry, and creating a view of the file system by merging the files on the removable medium with a read-only subset of the files of the machine file system. Writes to the computer's registry or file system may be prohibited. Instead, when a write is to be made to one of the files or elements of the registry represented in the view, the write is made to the files or registry values on the removable medium. Alternatively, changes may be written to a scratch area on the computer. The scratch area may be and typically is discarded upon removal of the removable medium.
Interactions between the application on the removable medium and the system may be limited to reading from the file system and registry views provided to the application and writing to selected areas of the file system (e.g., to My Documents). Because an application is not able to write to the actual system registry, the behavior of the application is limited. For example, suppose that the application provided and that is to be run on the removable medium is an ACROBAT reader. The ACROBAT reader typically provides an extension to an Internet browser such as INTERNET EXPLORER or NETSCAPE. Because ACROBAT will be run in its own silo, it will not be called as an extension from the Internet browser that is already installed on the computer because the machine-side registry view seen by the Internet browser is different that the one provided to ACROBAT.
The above described behavior makes embodiments of the invention ideal for use in environments such as those presented today in a kiosk, hence, one contemplated application of the above described embodiment is use in a kiosk-type environment. Kiosks are commonly seen in public places and provide computer and Internet related services by providing a computer and monitor for public use. When a removable medium including software according to embodiments of the invention, the user is able to run the software on the kiosk computer without leaving personal information or data on the kiosk computer or modifying the configuration of the kiosk's operating system.
Kiosks are commonly used today in airports, in tourist venues (to provide information on hotels, restaurants, or public transportation, etc.), at trade shows and in retail stores. For example, some in-store kiosks enable shoppers to link to a web site where customers can browse for items not physically located in the store and enable salespeople to access information about merchandise, such as product specifications, warranty information, and pricing comparisons. In another contemplated use, when a removable medium is inserted into a computer, an experience akin to a new log-on to a kiosk may be presented to the user. Results can be saved back to the removable medium. Optionally, more of the user environment (such as the user's documents and settings) can be saved to the removable medium.
In other embodiments of the invention, the application appears to be part of the user environment and is able to extend the system. For example, an ACROBAT reader on the removable medium becomes callable from the Internet browser. In these embodiments, after the silo is created and the merged views are provided, application-specific actions are run that introduce the necessary linkage on the machine. The linkage may be a set of key-value pairs that are introduced into the machine registry. Upon removal of the removable medium, the linkages are removed. The code that maintains the linkage may be described in a declarative manifest or special code that is run upon insertion/removal of the medium.
In other embodiments of the invention, the application appears to be part of the user environment and is able to extend the system but instead of the above-described set of actions, the user-interface (the shell) portion of the Internet browser is restarted in the silo. When the removable medium is inserted, a new program appears in the listing of programs. The new program can act as an extension to existing programs and can change the settings of the shell and so on but when the removable medium is removed, these settings are discarded.
Although not required, the invention can be implemented via an application programming interface (API), for use by a developer, and/or included within the network browsing software which will be described in the general context of computer-executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers, or other devices. Generally, program modules include routines, programs, objects, components, data structures and the like that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments. Moreover, those skilled in the art will appreciate that the invention may be practiced with other computer system configurations. Other well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to, personal computers (PCs), automated teller machines, server computers, hand-held or laptop devices, multi-processor systems, microprocessor-based systems, programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network or other data transmission medium. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.
With reference to
Computer 110 typically includes a variety of computer readable media. Computer readable media can be any available media that can be accessed by computer 110 and includes both volatile and nonvolatile media, removable and non-removable media. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Computer storage media includes both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CDROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by computer 110. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above should also be included within the scope of computer readable media.
The system memory 130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 131 and random access memory (RAM) 132. A basic input/output system 133 (BIOS), containing the basic routines that help to transfer information between elements within computer 110, such as during start-up, is typically stored in ROM 131. RAM 132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 120. By way of example, and not limitation,
The computer 110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,
The drives and their associated computer storage media discussed above and illustrated in
A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190. A graphics interface 182, such as Northbridge, may also be connected to the system bus 121. Northbridge is a chipset that communicates with the CPU, or host processing unit 120, and assumes responsibility for accelerated graphics port (AGP) communications. One or more graphics processing units (GPUs) 184 may communicate with graphics interface 182. In this regard, GPUs 184 generally include on-chip memory storage, such as register storage and GPUs 184 communicate with a video memory 186. GPUs 184, however, are but one example of a coprocessor and thus a variety of coprocessing devices may be included in computer 110. A monitor 191 or other type of display device is also connected to the system bus 121 via an interface, such as a video interface 190, which may in turn communicate with video memory 186. In addition to monitor 191, computers may also include other peripheral output devices such as speakers 197 and printer 196, which may be connected through an output peripheral interface 195.
The computer 110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 180. The remote computer 180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 110, although only a memory storage device 181 has been illustrated in
When used in a LAN networking environment, the computer 110 is connected to the LAN 171 through a network interface or adapter 170. When used in a WAN networking environment, the computer 110 typically includes a modem 172 or other means for establishing communications over the WAN 173, such as the Internet. The modem 172, which may be internal or external, may be connected to the system bus 121 via the user input interface 160, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer 110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,
One of ordinary skill in the art can appreciate that a computer 110 or other client device can be deployed as part of a computer network. In this regard, the present invention pertains to any computer system having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units or volumes. The present invention may apply to an environment with server computers and client computers deployed in a network environment, having remote or local storage. The present invention may also apply to a standalone computing device, having programming language functionality, interpretation and execution capabilities.
An application-specific view of a file system directory is created by a silo by merging a system file directory and a file directory on a removable medium into a single application-specific directory which is exposed to an application running in the silo. All (or all but a specified portion) of the system file directory portion of the application-specific directory may be read-only (to the application). The portion of the application-specific file directory coming from the removable medium file directory can be specified to be read-only or writable to the application running in the silo. An application-specific view of a registry is created by a silo by merging a system registry and a removable medium registry into an application-specific registry which is exposed to an application running within the silo. All (or all but a specified portion) of the system registry portion of the application-specific registry may be read-only (to the application). The portion of the application-specific file registry coming from the removable medium file registry can be specified to be read-only or writable to the application running in the silo.
a-c illustrate embodiments of a system 200 for running applications that are not installed on a computer from a removable medium inserted into or otherwise connected to the computer. System 200 may reside on one or more computers such as computer 110 described above with respect to
A removable medium is represented in
b illustrates computer 110 during execution of the application that has not been installed. Upon insertion or connection of the removable medium (e.g., USB key 212) to the computer 110 a sandboxed execution environment for the application to be run (e.g., program 3212c) is generated. A silo 216 is created and a merged application-specific directory 218 and a merged application-specific registry 220 is created. As may be appreciated from
c represents computer 110 after the process 222 has terminated. Suppose for example, that changes resulting from the execution of the application were to be written back to the removable medium. Suppose changes were made to Program 3 settings. The new Program 3 settings may be persisted onto the removable medium (represented in
In other embodiments of the invention, specified portions of the file system or registry may be read-write accessible to the application running in the silo. For example, the application may have been granted read write access to My Documents directory 204 of the system file system 202. In this case, Updated Document 3212emay be written to the My Documents directory 204. Similarly, New Program 3 Settings 212f may be written to the system Registry 208 of
Provisioning may require creating additional elements required for the application to be able to be run without installation onto the computer. To make the off-the-shelf software able to be run without installation and without leaving application-associated state on the computer, the installation software may be run once for initialization purposes and the values set by the installation software may be saved on the removable medium. For example, a removable medium as known today that houses an application that requires installation onto a computer to be run, typically includes program files needed to execute the application, program files that install the application onto the computer, data files, links, shortcuts, and so on. In contrast, in accordance with embodiments of the invention, the installation software is run once, in order to obtain necessary settings and values. These values are saved on the removable medium. The installation software itself may not be on the removable medium. In addition, code may be provided on the removable medium, that is to be run at the first time the application is run from the removable medium or whenever the removable medium is inserted into the computer. This code may perform the initialization of variables and values that is performed by today's installation software. This code may also enable the application to adjust to the hardware and software characteristics of the computer on which it is run. In addition, the removable medium may also be provisioned with a manifest. The manifest may describe a subset of a registry (i.e., the part of the registry used by or associated with the application) and a subset of a file system (i.e., the part of the file system used by or associated with the application). The manifest may describe the access attributes to be given to processes running in the silo.
In some embodiments of the invention, once the “master” removable medium has been created, the master has only to be copied to generate more copies of the provisioned removable medium. Hence the processing associated with provisioning or alternatively, portions of the processing associated with provisioning need not be repeated.
At 304 the provisioned removable medium is inserted into a computer such as the one described above with respect to
During creation of the sandbox, the user may have the option to specify the isolation properties of the sandbox. Alternatively, the isolation properties of the sandbox may be determined by a sandbox definition which is included in the manifest or in a separate sandbox definition file included on the removable medium. Contemplated isolation properties include the following:
all system files are read-only
some system files are writable
if some system files are writable, the name of the system writable files or directories
registry entries are read-only
specified registry entries are writable
files created or modified by the not-installed application are deleted upon application exit
files created or modified by the not-installed application are saved to the removable medium
a portion of the file system to which application writes are redirected (as for example, when the removable medium is read-only)
a portion of the user data that may be hidden or exposed with read-only access only or exposed read-write (e.g., a silo for a game can be prevented from looking at user private data or a silo for tax software may be allowed to write to the user's financial data files.) The definition of the sandbox is used by the silo to create the virtual merged file system and registry view which is exposed to the applications running in the silo.
At 308, in some embodiments of the invention, a menu is presented which provides one or more of the following options: prepare to run an application that has not been installed on the computer in the sandbox, execute an application that has not been installed on the computer inside the sandbox, or run an application that has been installed on the computer on the removable medium. The first option is selected the first time a new application on a removable medium is to be run in a sandbox. The second option may be selected for subsequent runs of the application. The last option enables the user to run an application that has previously been installed on the machine in the conventional (known) way, but enables the state, files, registry values, etc. to be written back to the removable medium instead of to system state, system files, etc. During execution of the application in the sandbox, the state, files, registry entry, etc. are updated onto the removable medium. At 310, after execution is complete, the sandbox is deleted. Deletion of the sandbox deletes the silo and any state created by execution of the application. At 312 the removable medium is removed.
The various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. Thus, the methods and apparatus of the present invention, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the invention. In the case of program code execution on programmable computers, the computing device will generally include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and at least one output device. One or more programs that may utilize the creation and/or implementation of domain-specific programming models aspects of the present invention, e.g., through the use of a data processing API or the like, are preferably implemented in a high level procedural or object oriented programming language to communicate with a computer system. However, the program(s) can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.
While the present invention has been described in connection with the preferred embodiments of the various figures, it is to be understood that other similar embodiments may be used or modifications and additions may be made to the described embodiments for performing the same function of the present invention without deviating therefrom. Therefore, the present invention should not be limited to any single embodiment, but rather should be construed in breadth and scope in accordance with the appended claims.