A method of opening a file using a computing device, the file being of a type that is not supported by any application installed in the computing device, the method comprising: receiving, from a user logged into the computing device, an indication that the user would like to open a file; in response to receiving the indication, issuing a request to open the file including providing metadata of the file; characterised by: determining whether the user has been allocated a persistent virtual machine that persistently maintains preferences and installed applications for the user; selecting the persistent virtual machine as a virtual machine to open the file responsive to determining that the user has been allocated the persistent virtual machine; selecting one of a plurality of non-persistent virtual machines which do not persistently maintain preferences and installed applications for the user as a virtual machine to open the file, responsive to determining that the user has not been allocated the persistent virtual machine; in response to the request, programmatically transmitting credentials of the user to a connection server to log the user into the virtual machine; and establishing a session with the virtual machine to access the file for viewing and editing, the virtual machine opening the file based on the request to open the file and the metadata of the file. receiving, from a user logged into the computing device, an indication that the user would like to open a file; in response to receiving the indication, issuing a request to open the file including providing metadata of the file; characterised by: determining whether the user has been allocated a persistent virtual machine that persistently maintains preferences and installed applications for the user; selecting the persistent virtual machine as a virtual machine to open the file responsive to determining that the user has been allocated the persistent virtual machine; selecting one of a plurality of non-persistent virtual machines which do not persistently maintain preferences and installed applications for the user as a virtual machine to open the file, responsive to determining that the user has not been allocated the persistent virtual machine; in response to the request, programmatically transmitting credentials of the user to a connection server to log the user into the virtual machine; and establishing a session with the virtual machine to access the file for viewing and editing, the virtual machine opening the file based on the request to open the file and the metadata of the file. determining whether the user has been allocated a persistent virtual machine that persistently maintains preferences and installed applications for the user; selecting the persistent virtual machine as a virtual machine to open the file responsive to determining that the user has been allocated the persistent virtual machine; selecting one of a plurality of non-persistent virtual machines which do not persistently maintain preferences and installed applications for the user as a virtual machine to open the file, responsive to determining that the user has not been allocated the persistent virtual machine; in response to the request, programmatically transmitting credentials of the user to a connection server to log the user into the virtual machine; and establishing a session with the virtual machine to access the file for viewing and editing, the virtual machine opening the file based on the request to open the file and the metadata of the file.