A computer system for application-level virtualization, the system comprising: a processor and memory configured to execute software instructions; a subsystem catalog component configured to receive a registration request from at least one virtualization subsystem, wherein registration allows a core virtualization system to virtualize applications using the virtualization subsystem without updating instructions of the core virtualization system; a subsystem monitoring component configured to invoke a registered virtualization subsystem to monitor an application being prepared for virtualization, wherein the subsystem monitoring component is further configured to iterate through the registered virtualization subsystems asking each subsystem whether the subsystem is interested in handling the application and to invoke a virtualization subsystem that indicates an interest in the application process so that the subsystem can monitor subsystem-specific configuration changes made by the application as the application runs; a package creation component configured to create a package for storing configuration data related to the application being prepared for virtualization; an application deployment component configured to deploy the application package to a client computer system so that the client computer system can invoke the virtualized application; and an application execution environment configured to provide a level of indirection between the virtualized application and a host operating system of the client computer system, wherein the application deployment component is further configured to perform application-specific configuration on the client system by invoking the virtualization subsystem associated with the application package, and wherein the application execution environment is further configured to invoke the registered virtualization subsystem associated with the application package to provide subsystem-specific handling of the virtualized application during run time. a processor and memory configured to execute software instructions; a subsystem catalog component configured to receive a registration request from at least one virtualization subsystem, wherein registration allows a core virtualization system to virtualize applications using the virtualization subsystem without updating instructions of the core virtualization system; a subsystem monitoring component configured to invoke a registered virtualization subsystem to monitor an application being prepared for virtualization, wherein the subsystem monitoring component is further configured to iterate through the registered virtualization subsystems asking each subsystem whether the subsystem is interested in handling the application and to invoke a virtualization subsystem that indicates an interest in the application process so that the subsystem can monitor subsystem-specific configuration changes made by the application as the application runs; a package creation component configured to create a package for storing configuration data related to the application being prepared for virtualization; an application deployment component configured to deploy the application package to a client computer system so that the client computer system can invoke the virtualized application; and an application execution environment configured to provide a level of indirection between the virtualized application and a host operating system of the client computer system, wherein the application deployment component is further configured to perform application-specific configuration on the client system by invoking the virtualization subsystem associated with the application package, and wherein the application execution environment is further configured to invoke the registered virtualization subsystem associated with the application package to provide subsystem-specific handling of the virtualized application during run time.