1. At a computer system, the computer system including a processor and system memory, the computer system accessible to a plurality of different users that share applications installed at the computer system, each user instantiating shared applications through the interoperation between components in a shared repository and components in a user specific private repository, a method for securely sharing a software application between users at the computer system, the method comprising: an act of receiving a user entered command from a specified user, the specified user being one of the plurality of users that share applications at the computer system, the user command instructing the computer system to instantiate a shared software application for use by the specified user, the shared software application having been previously installed for use by the specified user, the previous installation including at least installing one or more shared application data objects in a shared repository and installing at least a user manifest corresponding to the shared software application and one or more user specific configuration data objects in a user specific private repository for the specified user, the user manifest including: an first application identifier for identifying the shared software application stored in the shared repository; and a public key for a publisher of the shared software application; an act of accessing an application manifest for the shared software application from the shared repository in response to the user entered command, the application manifest including: a second application identifier for identifying the shared software application stored in the shared repository; a digital signature representing the publisher's signature on the application manifest file; and one or more data object identifiers detailing characteristics of appropriate application data objects for executing the shared software application; prior to permitting the shared software application to run at the computer system for use by the specified user, an act of processing the shared software application to verify security of the shared software application by verifying aspects of the application manifest stored in the shared repository, including: an act of the processor using the public key of the publisher to verify the publisher's signature on the application manifest for authenticity and to verify that the publisher is the author of the application manifest prior to relying on information contained in the application manifest to perform further verifications for the shared software application; an act of verifying that the first application identifier matches the second application identifier; and an act of verifying that the application data objects are appropriate for executing the shared software application by comparing the application data objects to characteristics detailed in the one or more data object identifiers; and upon verifying each of the aspects of the application manifest, an act of running the shared software application using the installed user specific configuration data objects that specify how the application is to be run for the user, wherein the shared application data objects in the shared repository are locked while the application is running such that other users are prevented from modifying the shared application data objects.