1. A computer-implemented method of provisioning a virtual desktop hosted on a virtual machine (VM) without rebooting the VM, comprising: before powering on the VM on which the virtual desktop being provisioned is hosted: applying configurations and customizations to a virtual disk of the VM, by: mounting the virtual disk to an application external to the VM; loading one or more registry hives from the mounted virtual disk; and modifying registry keys in the one or more loaded registry hives, wherein the modified registry keys are associated with at least one of user profile settings, system settings, and network settings that are modified for provisioning the virtual desktop, joining the VM to a domain, creating a user data disk, pushing a script, which is configured to at least format the user data disk, to the VM, and taking a reference snapshot of the VM, thereby permitting the virtual desktop to be reverted to a state of the reference snapshot, wherein the reference snapshot is taken prior to powering on the VM a first time and completing customization of the VM; powering on the VM; and while the VM is powered on, executing the script to perform additional customizations including formatting the user data disk subsequent to powering on the VM.