IP Library Granted Patent US 8,341,732
Granted Patent B2
US 8,341,732 · App. 11/624,403 · Granted Dec 25, 2012

Methods and systems for selecting a method for execution, by a virtual machine, of an application program

Assignee: Citrix Systems, Inc.
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,341,732
App. No.
11/624,403
Filed
Jan 18, 2007
Granted
Dec 25, 2012
Kind
B2
Art Unit
2493
USPC
726/21
Abstract

A method for selecting a method of execution for an application includes the step of receiving credentials. A plurality of applications available to a client machine is enumerated responsive to the received credentials. A request to execute an enumerated application is received. One of a predetermined number of methods for executing the requested application is selected responsive to a policy, the predetermined number of methods including a method for executing the requested application in a computing environment provided by a virtual machine.

Claims (78)

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.

2. The method of claim 1 , further comprising the step of providing access information associated with the requested application, the access information generated responsive to the selected method.

3. The method of claim 1 , wherein step (a) further comprises receiving user credentials associated with a user of a client machine.

4. The method of claim 1 , wherein step (c) further comprises receiving a request to execute an enumerated application, the enumerated application comprising a plurality of application files.

5. The method of claim 1 , wherein launching the requested application in the desktop computing environment further comprises:

streaming the requested application to the virtual machine; and

executing the requested application in the desktop computing environment launched into the virtual machine.

6. The method of claim 5 , wherein selecting the virtual machine further comprises evaluating the virtual machine.

7. The method of claim 6 , wherein selecting the virtual machine further comprises determining to stream the requested application responsive to the evaluation.

8. The method of claim 5 , wherein streaming the requested application to the virtual machine further comprises streaming to the virtual machine one of a plurality of files comprising the requested application.

9. The method of claim 5 , further comprising providing application-output data generated by the executing application via a presentation level protocol.

10. The method of claim 5 , further comprising providing application output data generated by the executing application via an Independent Computing Architecture presentation level protocol or a Remote Desktop Windows presentation level protocol or an XWindows presentation level protocol.

11. The method of claim 5 , wherein selecting the virtual machine further comprises identifying a virtual machine responsive to an evaluation of the client machine.

12. The method of claim 5 , wherein selecting the virtual machine further comprises selecting the virtual machine responsive to a policy.

13. The method of claim 1 , wherein selecting the virtual machine further comprises identifying a version of the requested application to execute.

14. The method of claim 13 , wherein selecting the virtual machine further comprises selecting the virtual machine responsive to the identified version of the requested application and provisioning the virtual machine to execute the identified version of the requested application.

15. The method of claim 13 , wherein selecting the virtual machine further comprises identifying a template from which to provision the virtual machine, the template selected responsive to the identified version of the requested application.

16. The method of claim 1 , wherein step (a) further comprises the steps of:

receiving a request from a client machine for access to a resource;

gathering, by a collection agent, user credentials; and

receiving the gathered user credentials.

17. The method of claim 16 , wherein gathering user credentials further comprises gathering user credentials by executing at least one script on the local machine.

18. The method of claim 16 , wherein gathering user credentials further comprises gathering user credentials associated with a user of the client machine.

19. The method of claim 16 , wherein receiving the gathering user credentials further comprises evaluating the client machine responsive to the received user credentials.

20. An apparatus that selects a method of execution for an application program, the apparatus comprising:

a transceiver receiving user credentials associated with a user of a client machine, transmitting an enumeration of a plurality of applications available to the user of the client machine, responsive to the received user credentials, and receiving a request to execute an enumerated application;

a server agent selecting 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;

an identification component;

an execution component; and

a management component;

wherein the method for executing the requested application in the desktop computing environment provided by the virtual machine includes

i) selecting the method of execution responsive to the policy based on at least the received user credentials;

ii) selecting, by the virtual machine management component, the virtual machine that can provide the desktop computing environment and an operating system in which to execute the desktop computing environment;

iii) selecting, by the identification component, an execution machine executing a hypervisor providing access to hardware resources required by the virtual machine;

iv) launching, by the execution component, the virtual machine into the execution machine, the virtual machine executing the operating system;

v) launching, by the execution component, the desktop computing environment into the executing operating system on the execution machine;

vi) launching the requested application into the desktop computing environment; and

vi) establishing, by the management component, a connection between the client machine and the desktop computing environment.

21. The apparatus of claim 20 , further comprising a policy engine.

22. The apparatus of claim 21 , wherein the policy engine applies a policy to the received user credentials.

23. The apparatus of claim 21 , wherein the policy engine makes an access control decision, responsive to the received user credentials.

24. The apparatus of claim 23 , wherein the server agent selects one of the plurality of predetermined methods for executing the requested application, responsive to the access control decision.

25. The apparatus of claim 20 , wherein the server agent streams the requested application to the selected virtual machine for execution.

26. The apparatus of claim 20 , wherein the server agent selects a method for streaming the requested application to the client machine.

27. The apparatus of claim 20 , wherein the selected virtual machine provides resource-output data generated by the execution of the application in the desktop computing environment via a presentation level protocol.

28. The apparatus of claim 20 , wherein the identification component identifies the virtual machine responsive to an evaluation of the client machine.

29. The apparatus of claim 20 , wherein the identification component identifies the virtual machine responsive to an evaluation of the requested resource application.

30. The apparatus of claim 20 , wherein the identification component selects the virtual machine responsive to a policy.

31. The apparatus of claim 20 , wherein the identification component further comprises identifying identifies a template from which to provision the virtual machine, the template selected responsive to an evaluation of the requested application.

32. The apparatus of claim 20 , wherein the identification component receives from the virtual machine management component the identification of the virtual machine.

33. The apparatus of claim 20 , wherein the identification component receives an identification of the execution machine.

34. The apparatus of claim 20 , wherein the execution component further comprises a means for launching the identified selected virtual machine into the hypervisor.

35. The apparatus of claim 20 , further comprising a collection agent gathering user credentials associated with the client machine.

36. The apparatus of claim 20 , further comprising a collection agent gathering user credentials associated with the user of the client machine.

37. The apparatus of claim 36 , wherein the server agent determines to stream one of a plurality of files comprising the requested application to the virtual machine responsive to an evaluation of the gathered user credentials.

38. The apparatus of claim 20 , wherein the management component provides an internet protocol address associated with the identified selected virtual machine to the client machine.

39. The apparatus of claim 20 , wherein the management component provides an internet protocol address associated with the execution machine to the client machine.

40. The apparatus of claim 20 , wherein the management component provides a proxy for communication between the client machine and the virtual machine.

41. The apparatus of claim 20 , wherein the management component establishes the connection between the client machine and the desktop computing environment using a presentation-layer protocol.

42. A non-transitory nonvolatile computer-readable medium encoded with instructions that, when executed by a computer-implemented system, cause the computer-implemented system to:

(a) enumerate a plurality of applications available to a client machine responsive to received user credentials; and

(b) upon receiving a receiving a request to execute a requested application from among the plurality of applications, select 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;

v) 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.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 10, 2007
From: CROFT, RICHARD JASON; LOW, ANTHONY EDWARD; MAZZAFERRI, RICHARD JAMES; PEDERSEN, BRADLEY J.
To: CITRIX SYSTEMS, INC.
Reel/Frame 019138/0768 →
Continuity (2)
Provisional Application 60761674 · Jan 24, 2006
Related Publication 20070180450A1 · Aug 2, 2007