1. A method for selecting a method of execution for an application program, the method comprising: (a) receiving user credentials; (b) enumerating a plurality of applications available to a client machine responsive to the received user credentials; (c) receiving a request to execute an enumerated application; and (d) selecting, by a broker machine, one of a plurality of predetermined methods for executing the requested application, responsive to a policy, the plurality of predetermined methods including a method for executing, on the client machine or on a remote machine, the requested application in a desktop computing environment provided by a virtual machine by i) selecting the method of execution responsive to the policy based on at least the received user credentials; ii) selecting the virtual machine that can provide the desktop computing environment and an operating system in which to execute the desktop computing environment; iii) selecting an execution machine executing a hypervisor providing access to hardware resources required by the virtual machine; iv) launching the virtual machine into the execution machine, the virtual machine executing the operating system; iv) launching the desktop computing environment into the executing operating system on the execution machine; and vi) launching the requested application into the desktop computing environment.