1. A method for providing a remote user interface for a computing device, comprising: emulating a local hardware device on the computing device; executing a software application on the computing device; and redirecting commands generated by the software application for the emulated local hardware device to a remote user interface (UI).