A method for booting a client computer to a predetermined state via a network, the method comprising: issuing, by a client executing emulation code and client disk access interrupt procedures, a request for a first set of sectors of a virtual hard disk associated with a server computing device, the first set of sectors comprising a master boot record; receiving, via the network, the master boot record from the server computing device; executing the contents of the master boot record, the executing comprising: installing a second client disk access interrupt handler procedure that intercepts a read request and a write request to a hard disk, forwards the read request to the server computing device, and caches the write request to prevent the write request from being executed at the virtual hard disk to preserve the state of the virtual hard disk; and issuing a second request for a second set of sectors that comprise an O/S boot file; receiving, from the server computing device, the O/S boot file; executing the O/S boot file, the executing comprising: issuing a third request for a third set of sectors comprising a hibernation image; receiving the hibernation image, the hibernation image comprising the contents of local memory, memory management information, and other state information needed to restore the client to the pre-determined operating state; loading the hibernation image into client memory; initializing drivers, data structures and applications associated with the O/S; and executing, after initializing the drivers, the cached write request to restore the client computer to the predetermined state. issuing, by a client executing emulation code and client disk access interrupt procedures, a request for a first set of sectors of a virtual hard disk associated with a server computing device, the first set of sectors comprising a master boot record; receiving, via the network, the master boot record from the server computing device; executing the contents of the master boot record, the executing comprising: installing a second client disk access interrupt handler procedure that intercepts a read request and a write request to a hard disk, forwards the read request to the server computing device, and caches the write request to prevent the write request from being executed at the virtual hard disk to preserve the state of the virtual hard disk; and issuing a second request for a second set of sectors that comprise an O/S boot file; installing a second client disk access interrupt handler procedure that intercepts a read request and a write request to a hard disk, forwards the read request to the server computing device, and caches the write request to prevent the write request from being executed at the virtual hard disk to preserve the state of the virtual hard disk; and issuing a second request for a second set of sectors that comprise an O/S boot file; receiving, from the server computing device, the O/S boot file; executing the O/S boot file, the executing comprising: issuing a third request for a third set of sectors comprising a hibernation image; receiving the hibernation image, the hibernation image comprising the contents of local memory, memory management information, and other state information needed to restore the client to the pre-determined operating state; loading the hibernation image into client memory; initializing drivers, data structures and applications associated with the O/S; and executing, after initializing the drivers, the cached write request to restore the client computer to the predetermined state.