搜尋 圖片 地圖 Play YouTube 新聞 Gmail 雲端硬碟 更多 »
進階專利搜尋 | 網頁紀錄 | 登入

專利

公開號US5375206 A
出版類型授權
申請書編號08/198,657
發佈日期1994年12月20日
申請日期1994年2月18日
優先權日期
1991年3月11日
發明人
原專利權人
美國專利分類號
國際專利分類號
合作分類
歐洲分類號
G06Q30/04
G06F21/10
參考文獻
外部連結
Method for licensing software
US 5375206 A
摘要

Disclosed is a system that provides a common application software interface for a variety of vendor supplied license servers. The system provides a single set of program calls and translates this single set of calls into a set of calls for each license server. This translation is performed using a translate table, which is easily updated to interface to newly developed or newly released license servers. The system runs as a separate process within the operating environment to monitor the application program, and as long as the application program continues to provide services to the user, the system sends periodic license renewal messages to the license server. The system also notifies the user when the application program cannot obtain a license in order to provide a consistent user interface across applications.

聲明
What is claimed is:

1. A computer implemented method for interfacing between a licensed application program and a plurality of license server programs in an operating system executing in a computer system, for the purpose of obtaining a license to use the licensed application program, said computer implemented method comprising the steps of:

(a) programmatically receiving a license request from the licensed application program, wherein said license request is defined in a first format;

(b) programmatically requesting identification information from a currently active license server program to identify which one of the plurality of license server programs is currently in use by the operating system;

(c) programmatically translating said license request from said first format into a second format required by said one of the plurality of license server programs identified in step (b);

(d) programmatically sending said translated request to said license server program identified in step (b);

(e) programmatically receiving a response from said license server program identified in step (b), wherein said response indicates whether a license to use the licensed application program is granted;

wherein step (e) further comprises the steps of:

(e1) when said response indicates said license is not granted, presenting an options menu to a user of the licensed application program, through a display attached to said computer system;

(e2) obtaining a menu selection input from the user through an input device attached to said computer system;

(e3) immediately retrying said license request by repeating steps (d) and (e), when said menu selection input from the user requests that said license request be attempted again; and

(e4) sending a queue request to said license server program currently in use, to place said license request into a queue, when said menu selection input from the user requests waiting for a license to be granted, whereby said license server program currently in use may grant a license when a license becomes available;

(f) programmatically sending said response to the licensed application program, whereby said licensed application program continues execution when said license is granted and discontinues when said license is not granted; and

(g) programmatically initiating and sending, at predefined periodic intervals, a license renewal request to said one of the plurality of license server programs identified in step (b), said license renewal request being initiated and sent independently of receiving a license renewal request from the licensed application program.

2. A system for interfacing between a licensed application program and a plurality of license server programs, said system comprising:

a computer system;

a multi-tasking operating system contained within a memory of said computer system;

means for performing the licensed application program within one task of said multi-tasking operating system;

library module program means, programmatically linked to the licensed application program, for receiving a license request from the licensed application program;

license monitor means, located in a separate task of said multi-tasking operating system, for communicating with said plurality of license server programs;

means within said license monitor means for determining which one of the plurality of license server programs is currently in use by said multi-tasking operating system;

communication means, connected between said library module program means and said license monitor means, for sending said license request from said library module program means to said license monitor means and for receiving a response from said license monitor means;

translation means, contained within said license monitor means, for translating said license request into a translated request having a request format defined by said one of the plurality of license servers currently in use;

means for sending said translated request from said license monitor means to said one of the plurality of license server programs currently in use;

response means for using said communication means for sending a response received from said one of the plurality of license server programs currently in use to said library module means and for further sending said response to the licensed application program wherein said response indicates whether a license to use said licensed application program is granted;

means within said license monitor means for determining that the licensed application program is continuing to be performed within the multi-tasking operating system;

means within said license monitor means for initiating and sending, at predefined periodic intervals, a license renewal request to said one of the plurality of license server programs currently in use, said license renewal request being sent only when the licensed application program is continuing to be performed within the multi-tasking operating system, and said license renewal request being sent independently of receiving a license renewal request from the licensed application program.

3. The system of claim 2 wherein said library module program means further comprises:

means for determining whether said license monitor means is currently operating in separate task of said multi-tasking operating system, said means for determining being operable prior to sending said license request through said communications means; and

means for activating said license monitor as a separate task when said means for determining determines that license monitor is not currently operating.

4. The system of claim 2 wherein said response means further comprises:

means for presenting an options menu to a user of the licensed application program, through a display attached to said computer, when said one of the plurality of license server programs currently in use fails to grant a license;

input means, attached to said computer, for obtaining menu selection input from the user;

means for immediately re-sending said license request to said one of said plurality of license server programs currently in use when said input from the user requests that said license request be attempted again;

means for sending a queue request to said license server program currently in use to place said license request into a queue when said input from the user requests waiting for a license to become available, whereby said one of said plurality of license server programs currently in use may grant a license when a license becomes available; and

means for immediately sending a request to said license server program currently in use for a second type of license when said input from the user requests said second type of license.

5. The system of claim 2 further comprising encoding means within said communication means for securing all information sent over said communication means.

6. A computer implemented method for interfacing between a licensed application program and a plurality of license server programs in an operating system executing in a computer system, for the purpose of obtaining a license to use the licensed application program, said computer implemented method comprising the steps of:

(a) programmatically receiving an unrestricted type license request from the licensed application program, wherein said license request is defined in a first format;

(b) programmatically requesting identification information from a currently active license server program to identify which one of the plurality of license server programs is currently in use by the operating system;

(c) programmatically translating said license request from said first format into a second format required by said one of the plurality of license server programs identified in step (b);

(d) programmatically sending said translated request to said license server program identified in step (b);

(e) programmatically receiving a response from said license server program identified in step (b), wherein said response indicates whether an unrestricted type license to use the licensed application program is granted, and when said unrestricted type license is not granted, performing the steps of

(e1) presenting an options menu to a user of the licensed application program, through a display attached to said computer system,

(e2) obtaining a menu selection input from the user through an input device attached to said computer system,

(e3) when said menu selection input from the user requests that said license request be attempted again, immediately retrying said license request by repeating steps (d) and (e),

(e4) when said menu selection input from the user requests waiting for a license to be granted, sending a queue request to said license server program currently in use, to place said license request into a queue, whereby said license server program currently in use may grant a license when a license becomes available, and

(e5) when said input from the user requests a second type of license, sending a request for said second type of license;

(f) programmatically sending said response to the licensed application program, whereby said licensed application program continues execution when said license is granted and discontinues execution when said license is not granted; and

(g) programmatically initiating and sending, at predefined periodic intervals, a license renewal request to said one of the plurality of license server programs identified in step (b) , said license renewal request being initiated and sent independently of receiving a license renewal request from the licensed application program.

說明

This is a continuation of copending application Ser. No. 08/031,063 filed on Mar. 12, 1993, now abandoned.

FIELD OF THE INVENTION

This invention relates to Computer Systems and more particularly to licensing of software within a computer system. Even more particularly, the invention relates to licensing software through a common network licensing server.

BACKGROUND OF THE INVENTION

Licensing of computer software has traditionally been done by providing a copy of the software for each computer that was licensed to use the software. The licensed software was "locked" to the computer and could not be legally used on another computer. When computers are networked together, the practice of locking the software to a network node becomes particularly bothersome. One solution to this problem is to use a network license manager, also called a network license server. When a network license server is used, the software may be installed on any or all nodes of the network, however, only a certain number of licenses are purchased from the vendor. The license server limits the number of concurrent users of the software to the number of licenses purchased. This is done by providing some form of license "token" to the software when a user starts to use the software. That is, each time a user wants to use the software, the software sends a network message to the license server requesting a license token. If a token is available, it is returned to the software, and the software then performs its function for the user. When the user finishes using the software, the token is returned to the license server. When all the licenses are in use, the next user will not receive a token and must wait for one to become available. For example, if a network has ten nodes, the software may be installed on all the nodes. If only five licenses are purchased, five users may use the software at the same time. If a sixth user on the network attempts to use the software, no license is available, so this sixth user must wait. The software on this sixth node will not function until it receives a license token. In this manner, the software vendor gets paid for the maximum number of concurrent users, and the customer can start small and add licenses as the usage increases.

This method has proven popular and several different license servers are available from different software vendors. This causes a problem, however, since a customer may use any of the license servers available, and the application software vendor, who may be different from the license server software vendor, must provide different software to interface with each of the different license servers. To interface with the various license servers, an application software vendor must develop several different versions of the application software, one for each of the license servers. This is very costly, and causes considerable delay when the wrong version is sent to a user.

Another problem is that each of the license servers has different interface requirements. This increases development cost and increases the potential for errors. Still another problem is that a software application must be modified each time a new license server is developed or a new version of an existing server is released.

Providing a consistent user interface when a license is not available is yet another problem. When a license is not available, the user must be notified and given the choice of discontinuing the application or being placed in a queue to wait for a license. This user interface must be written for each license server used by each application, thus the user is presented with many different interfaces, all of which are used for solving the same problem.

There is need in the art for a common interface to allow application software to interface to various license servers. There is a further need in the art for such a common interface that allows application software to be easily adaptable to newly developed license servers. A still further need is for a common user interface to notify a user that a problem exists in obtaining a license. The present invention meets these and other needs.

SUMMARY OF THE INVENTION

It is an aspect of the present invention to provide a method of licensing a software application program via common network licensing server software.

It is another aspect of the invention to provide a common interface between such an application program and a plurality of network licensing servers.

Still another aspect is to allow such licensing with a single set of program calls from a single point in the application program.

A further aspect is to provide a single user interface for selecting available user options when a license to the software application is unavailable.

The above and other objects of the invention are accomplished in a system that provides a common application program interface to a variety of license servers. The system provides a single set of program calls and translates this single set of calls into a different set of calls for each license server. This translation is performed using a translation table, which is easily updated to interface to newly developed license servers or new versions of existing servers.

One of the requirement of most license servers is that the application program send a license renewal message to the license server periodically to notify the server that the license is still in use. If the application program fails to send the message, the license server times it out and releases the license to another user. The system of the present invention runs as a separate process within the operating system environment to monitor the application program, and as long as the application program continues to provide services to the user, the system of the present invention sends the periodic license renewal messages to the license server. This relieves the application program of the task of providing the periodic messages, thus the application program need only provide initialization calls, which considerably simplifies the application program.

The system also notifies the user when the application program cannot obtain a license. Since the system of the present invention is performing this notification, the user interface is consistent across all software applications that use the system of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The above and other aspects, features, and advantages of the invention will be better understood by reading the following more particular description of the invention, presented in conjunction with the following drawings, wherein:

FIG. 1 shows a block diagram of a computer system incorporating the present invention;

FIG. 2 shows a diagram of the processes of the present invention, and their way of communicating;

FIG. 3 shows a flowchart of the initialization process of the present invention;

FIG. 4 shows a flowchart of the function called by the application software to interact with the license monitor after initialization;

FIGS. 5, 6 and 7 show a flowchart of the license monitor of the present invention;

FIG. 8 shows a diagram of the translation table used by the license monitor; and

FIG. 9 shows the user interface screen that displays user options when a license is unavailable.

DESCRIPTION OF THE PREFERRED EMBODIMENT

The following description is of the best presently contemplated mode of carrying out the present invention. This description is not to be taken in a limiting sense but is made merely for the purpose of describing the general principles of the invention. The scope of the invention should be determined by referencing the appended claims.

FIG. 1 shows a block diagram of a computer system incorporating the present invention. Referring now to FIG. 1, a computer system 100 contains a processing element 102. The processing element 102 communicates to other elements of the computer system 100 over a system bus 104. A keyboard 106 allows a user of the system to input textual information, and a mouse 110 allows the user to input graphical information. A graphics display 108 allows the system to output text and graphics for viewing by the user. A disk 112 is used to store the software and data of the present invention, as well as software and data for the software application programs within the computer system 100. A communications interface 114 is used by the present invention to communicate with a license monitor remote server in another node of the network to which the computer system 100 is attached. Memory 116 contains the Unix multitasking operating system 118. Unix is a registered trademark of AT&T. In the preferred embodiment of the present invention, the invention uses the Unix operating system, however, other multitasking operating systems, or even a single tasking operating system such as MS DOS could be used with the present invention. A licensed application 120 uses the services of the present invention through library routines compiled and linked into the licensed application 120. These routines communicate to a license monitor local server task 122 which in turn communicates over the communications interface 114 to a vendor specific license server (not shown in FIG. 1).

FIG. 2 shows a diagram of the processes of the present invention, and their interaction. Referring now to FIG. 2, the licensed application 120 from FIG. 1 is shown surrounded by dashed lines. Within the licensed application 120 is a licensed application program 202 which utilizes the services of the present invention. Linked into the licensed application 120 to communicate with the licensed application program 202 are a set of Licensed Mechanism Standard Interface (LMSI) library routines 204. These routines will be more fully described below. The LMSI library routines 204 communicate to the license monitor local server 122 over a secured interprocess communications link 206. The link 206 is made secure by encoding the data. Various means for encoding data are well known in the art. This encoding is necessary to prevent unauthorized usage of the licensed application program by supplying a bogus license monitor local server.

The license monitor local server 122 contains an LMSI license monitor 212 which receives communications from the LMSI library routines 204. The LMSI license monitor 212 uses a license monitor translation table (LMTT) 210 to translate the request from the licensed application program 202 into a set of requests for a particular set of vendor specific library routines 208. The vendor specific library routines 208 then communicate to a vendor specific license server 214, typically located in another node of the network. The vendor specific library routines 208 may be one of several different sets of routines for several different vendors, for example the NetLS license server, available from Hewlett Packard Company, the Flexlm license server available from Highland Software, and the SunNET license server available from Sun Microsystems, Inc.

FIG. 3 shows a flow chart of one of the LMSI library routines 204 (FIG. 2) called by the licensed application program 202 to initialize the license monitor. Referring now to FIG. 3, after entry, block 302 determines whether the license monitor local server 122 is currently running as a daemon. In the Unix operating system, a daemon is an independent process within the operating system, typically started during initialization of the operating system. This type of process performs various services for application programs. For example, printing is done by a daemon process in Unix. In the system of the present invention, the license monitor local server can be implemented as a daemon, or it can be implemented as a child process started by the process containing the licensed application. Block 302 determines whether a server daemon is active, and if one is not active, block 302 transfers to block 304 which starts the license monitor local server as a child process. After starting the child process, or if a daemon is already active, control transfers to block 306 which establishes secure communications to the license monitor local server. This secured communications is created by encoding all transfers between the license monitor local server and the LMSI library routines 204 within the licensed application 120. Block 308 then determines whether communications was established and, if not, block 308 transfers to block 316 which returns an error indication to the licensed application program 202. If secure communications has been established, block 308 transfers to block 310 which calls the LMSI license monitor 212 to get a vendor specific information handle from the LMTT 210. This "handle" is a pointer to information which is necessary for use by the application program 202 in all other calls to the LMSI library routines. Block 312 determines whether the handle was successfully obtained and, if not, transfers to block 316 to return an error. If the handle was successfully obtained, block 312 transfers to block 314 which returns the handle to the licensed application program 202.

FIG. 4 shows a flow chart of the routine called by the licensed application program 202 to interact with the license monitor local server after initialization. This routine is called to request a license, return a license, get a list of current users that are using licenses for the application, or, optionally, to check the current state of the license. Referring now to FIG. 4, after entry, block 402 determines whether the license monitor local server is active and, if not, block 402 transfers to block 408 to return an error condition. If the server is active, that is, the initialization routine of FIG. 3 was called prior to calling this routine, block 402 transfers to block 404 which sends the parameters necessary to perform the request for the application program 202 to the license monitor local server 122. Block 404 then waits until a message is returned from the license monitor local server and block 406 checks the status returned in this message. If the status indicates that the request was not performed successfully, block 406 transfers to block 408 which returns an error indication, otherwise, block 406 returns to the licensed application program 202 with a success indication, and it returns any data obtained by the request.

FIGS. 5, 6 and 7 show a flow chart of the LMSI license monitor 212 (FIG. 2). This monitor is sent messages by the routines of FIGS. 3 and 4 to cause it to perform the license monitor local server functions. Referring now to FIG. 5, after entry, block 502 determines whether the message sent from the LMSI library routines is for initialization. If the message is for initialization, block 502 transfers to block 504 which determines whether the license monitor local server has been previously initialized. If not, block 504 transfers to block 506 which sets up an interval timer signal to cause the operating system to periodically call FIG. 7. This call is used to send periodic license renewal requests to the license monitor remote server, located in another node of the network, to keep the license available to the licensed application program. If these periodic calls are not made, the vendor specific license server may assume that the node containing the licensed application program is no longer functional and may free the license for use by others. After setting up the interval timer signal, block 506 transfers to block 508 which calls the vendor specific library routines 208 (FIG. 2) to perform the initialization. Each of the various sets of vendor specific library routines that interface with the present invention has some form of initialization. Block 508 calls the vendor specific library routines using the specific form acceptable to the specific vendor. After the initialization, block 510 determines whether the initialization was successful and, if not, transfers to block 524 which returns an error indication. If the initialization was successful, or if the license monitor local server had been previously initialized, control transfers to block 512 which sets up a pointer to an area within the license monitor translation table 210 (FIG. 2) for this particular vendor. Block 514 then returns this pointer as the handle to the LMSI library routine 204. If the message is not for initialization, block 502 transfers to block 516 which determines whether the call is to request a license. If the call is not for a license request, that is, the call is for returning a license, or for getting the number of current users that are using licenses for an application, or it is a call for checking the state of the current license, control transfers to block 518 which calls the vendor specific library routines 208 (FIG. 2) and passes the parameters to obtain the information requested by the LMSI library routines 204. Block 520 then determines whether the call was successful and, if not, block 520 transfers to block 524 which returns an error message to the LMSI library routines 204. If the call was successful, block 520 transfers to block 522 which returns the information requested by the application.

If the message sent by the LMSI library routines 204 is to request a license, block 516 transfers to FIG. 6 block 602. Block 602 calls the vendor specific library routines 208 to request a license and waits for the vendor specific library routines to contact the vendor specific license server to obtain the license token. After the call returns, block 604 determines whether the license was obtained. If the license was obtained, block 604 transfers to block 624 which places an entry for this license in a license table, which will be used by FIG. 7 for the periodic license renewal calls. Block 624 then returns a success indication to the LMSI library routines 204.

If the license was not obtained, block 604 transfers to block 606 which displays a user request asking the user for input. An example display of this user request is shown in FIG. 9. The display shown in FIG. 9, is a typical display from a windowing system, and provides several "buttons" that the user can use to indicate their choice. The application program may disable any of these buttons when it calls the LMSI library routines 204. This allows the application to have complete control over the system. Button 902 allows the user to request a retry, button 904 allows a user to request placing the request in a queue, button 906 allows the user to request a demonstration copy of the software, and button 908 is used when the user wishes to discontinue trying to obtain a license. Status box 910 will be used by block 606 to display a message indicating the current conditions. The example message given in box 910 would occur when the licensed application program was unknown to the vendor specific license server.

If the system is not being used with a windowing system, a character based user interface is used. This interface (not shown) is similar to the display of FIG. 9, but uses the arrow keys and the enter key instead of a mouse.

After displaying the user request block 606 transfers to block 608 to get the user input. Block 610 then determines whether the user has clicked the mouse on the retry button 902 and, if so, block 610 transfers back to block 602 for another attempt at obtaining a license. If the user input is not for a retry, block 610 transfers to block 612 which determines whether the user clicked the mouse on the demo button. If the user clicked the mouse on the demo button, block 612 transfers to block 614 which informs the application that a demonstration has been requested and then returns. If the user did not click the demo button, block 612 transfers to block 615 which determines whether the user clicked the exit button 908, If the user did click on the exit button 908, block 615 transfers to block 619 which informs the application that exit has been requested and returns. If the user did not click on the exit button 908, block 615 transfers to block 616 which determines whether the user clicked on the queue button 904. If the user did not click on the queue button 904, block 616 transfers back to block 606 to re-display the user request. If the user did click on the queue button, block 616 transfers to block 618 which builds a queue request and then block 620 calls the vendor specific library routines 208 to send the queue request to the vendor specific license server to place this licensed application program into a queue to obtain the next license available. Block 622 then returns the queue position to the LMSI library routines 204.

FIG. 7 shows a flow chart for a timer signal handler routine. A call to this signal handler was set up by block 506 (FIG. 5). As discussed above, this routine is used to send periodic license renewal requests to the vendor specific license server to keep the license active. Referring now to FIG. 7, after entry, block 702 gets the first or next license table entry. This table was set up by block 624 (FIG. 6). Block 704 determines whether the end of the table has been reached and if it has, block 704 returns from the timer interrupt. If one or more entries is still available in the license table, block 704 transfers to block 706 which calls the vendor specific library routines 208 to have it send a message over the network to the vendor specific license server to keep the license active. If the license is still active, the vendor specific license server will return a message to the vendor specific library routines 208 which will return the status to block 706. After receiving the status, block 708 determines whether the license is valid and if it is, transfers control back to block 702 to check the next entry in the license table. If the license is not valid, block 708 transfers to block 710 which determines whether the application had set up a signal to be called when an invalid license is detected. A license may expire because the expiration date for the license has passed or the license server can no longer be contacted (possibly caused by a network failure). If the license server cannot be contacted, the server may eventually re-issue the license to another application running on a different node. Also, some applications cannot deal with signals, therefore, the application can disable the signal feature when it calls the LMSI library routines 204. Instead, the application may request the current state of the license from the system, as described above with respect to FIG. 4 and the call to check the current state of the license.

If no signal had been set up, block 710 returns to block 702 to check the next table entry. If a signal had been set up, block 710 transfers to block 712 which signals the licensed application program 202 that the license has expired. Block 712 then returns to block 702 to check the next entry.

FIG. 8 shows an example of the license monitor translation table 210 (FIG. 2). Referring now to FIG. 8, block 802 shows an example of the translation table entries for the NetLS vendor specific library routines. Block 804 shows the translation table entries for the Flexlm vendor specific library routines, and block 806 shows the translation table entries for the SunNET vendor specific library routines. As shown in each of the blocks, the entries are position dependent, which allows the information supplied by the licensed application program to be easily translated into the information needed by, the vendor specific library routines. Those skilled in the art will recognize that many other methods could be used to set up the translation table.

Having thus described a presently preferred embodiment of the present invention, it will now be appreciated that the aspects of the invention have been fully achieved, and it will be understood by those skilled in the art that many changes in construction and circuitry and widely differing embodiments and applications of the invention will suggest themselves without departing from the spirit and scope of the present invention. The disclosures and the description herein are intended to be illustrative and are not in any sense limiting of the invention, more preferably defined in scope by the following claims.

專利引用
引用的專利申請日期發佈日期 申請者專利名稱
US44411631981年6月16日1984年4月3日International Business Machines CorporationDynamic send queue modification system
US47121891984年10月23日1987年12月8日Hitachi, Ltd.Table driven translator
US47808211986年7月29日1988年10月25日International Business Machines Corp.Method for multiple programs management within a network having a server computer and a plurality of remote computers
US49243781988年6月13日1990年5月8日Prime Computer, Inc.License mangagement system and license storage key
US49378631988年3月7日1990年6月26日Digital Equipment CorporationSoftware licensing management system
US49411751989年2月24日1990年7月10日International Business Machines CorporationTamper-resistant method for authorizing access to data between a host and a predetermined number of attached workstations
US50239071988年9月30日1991年6月11日Apollo Computer, Inc.Network license server
US51387121989年10月2日1992年8月11日Sun Microsystems, Inc.Apparatus and method for licensing software on a network of computers
US51465931989年3月6日1992年9月8日International Business Machines CorporationProcedure call interface
US51758101989年6月19日1992年12月29日Digital Equipment CorporationTabular data format
被以下專利引用
引用本專利申請日期發佈日期 申請者專利名稱
US54598371993年4月21日1995年10月17日Digital Equipment CorporationSystem to facilitate efficient utilization of network resources in a computer network
US56641061995年2月9日1997年9月2日Digital Equipment CorporationPhase-space surface representation of server computer performance in a computer network
US56733151995年7月24日1997年9月30日International Business Machines CorporationMethod and system for software asset usage detection and management
US57322401996年11月27日1998年3月24日Digital Equipment CorporationReal-time data cache size adjustment in a server computer
US57427571996年5月30日1998年4月21日Mitsubishi Semiconductor America, Inc.Automatic software license manager
US57428191996年11月27日1998年4月21日Digital Equipment CorporationSystem and method for dynamically analyzing and improving the performance of a network
US57520411995年12月15日1998年5月12日International Business Machines CorporationMethod and system for licensing program management within a distributed data processing system
US57547631996年10月1日1998年5月19日International Business Machines CorporationSoftware auditing mechanism for a distributed computer enterprise environment
US57580691996年3月15日1998年5月26日Novell, Inc.Electronic licensing system
US57759941995年12月27日1998年7月7日United Microelectronics Corp.Method for automatically activating a control procedure at a user's game system through a broadcast network when said user's license is expired
US57906641996年2月26日1998年8月4日Network Engineering Software, Inc.Automated system for management of licensed software
US57969411996年9月6日1998年8月18日Catalyst Semiconductor, Inc.Method for supervising software execution in a license restricted environment
US58190331996年11月27日1998年10月6日Caccavale; Frank SamuelSystem and method for dynamically analyzing and improving the performance of a network
US58222911995年11月21日1998年10月13日Zoom Television, Inc.Mass storage element and drive unit therefor
US58357561996年11月27日1998年11月10日Digital Equipment CorporationReal-time open file cache hashing table restructuring in a server computer
US58599691996年1月11日1999年1月12日Fujitsu LimitedRemote installation system and method
US58929371996年11月27日1999年4月6日Digital Equipment CorporationReal-time data cache flushing threshold adjustment in a server computer
US59036501996年5月3日1999年5月11日Apple Inc.Method and apparatus for electronic license distribution
US59058601997年2月24日1999年5月18日Novell, Inc.Fault tolerant electronic licensing system
US59251271997年4月9日1999年7月20日Microsoft CorporationMethod and system for monitoring the use of rented software
US60237631997年4月23日2000年2月8日Fisher Controls International, Inc.Method of and apparatus for protecting and upgrading software using a removable hardlock
US60980541997年11月13日2000年8月1日Hewlett-Packard CompanyMethod of securing software configuration parameters with digital signatures
US61345931997年9月30日2000年10月17日Cccomplete, Inc.Automated method for electronic software distribution
US61356461997年2月28日2000年10月24日Corporation For National Research InitiativesSystem for uniquely and persistently identifying, managing, and tracking digital objects
US62724691998年11月25日2001年8月7日Ge Medical Systems Global Technology Company, LlcImaging system protocol handling method and apparatus
US63082041995年10月12日2001年10月23日Touchtunes Music CorporationMethod of communications for an intelligent digital audiovisual playback system
US63246931999年8月17日2001年11月27日Siebel Systems, Inc.Method of synchronizing independently distributed software and database schema
US63362191999年7月21日2002年1月1日Touchtunes Music CorporationAudiovisual reproduction system
US63469511997年9月23日2002年2月12日Touchtunes Music CorporationProcess for selecting a recording on a digital audiovisual reproduction system, for implementing the process
US64670071999年5月19日2002年10月15日International Business Machines CorporationProcessor reset generated via memory access interrupt
US64989372000年7月14日2002年12月24日Trw Inc.Asymmetric bandwidth wireless communication techniques
US65021241997年11月6日2002年12月31日Hitachi, Ltd.Method of and apparatus for managing licensed software
US65638001999年11月10日2003年5月13日Qualcomm, Inc.Data center for providing subscriber access to data maintained on an enterprise network
US65780512000年6月21日2003年6月10日Touchtunes Music CorporationDevice and process for remote management of a network of audiovisual information reproduction systems
US65878811999年4月9日2003年7月1日Microsoft CorporationSoftware server usage governor
US66120442001年2月1日2003年9月2日Faro Technologies, Inc.Method, system and storage medium for providing an executable program to a coordinate measurement system
US66221591999年6月30日2003年9月16日International Business Machines CorporationMethod, apparatus and computer program product for automatically restarting an RPC server without losing client RPC calls
US66812401999年5月19日2004年1月20日International Business Machines CorporationApparatus and method for specifying maximum interactive performance in a logical partition of a computer system independently from the maximum interactive performance in other partitions
US66911461999年5月19日2004年2月10日International Business Machines CorporationLogical partition manager and method
US67557442000年10月12日2004年6月29日Touchtunes Music CorporationCommunication device and method between an audiovisual information playback system and an electronic game machine
US67960482002年4月9日2004年9月28日Faro Technologies, Inc.Method, system and storage medium for providing a tool kit for a coordinate measurement system
US68047832000年4月18日2004年10月12日Network Engineering SoftwareFirewall providing enhanced network security and user transparency
US68203462003年8月26日2004年11月23日Faro Technologies, Inc.Method, system and storage medium for providing an executable program to a coordinate measurement system
US69013711999年12月30日2005年5月31日Ge Medical Systems Global Technology Company, LlcImaging system protocol handling method and apparatus
US69228312000年8月2日2005年7月26日Gateway Inc.Method and system for providing software utilizing a restore medium and a network
US69592911999年5月19日2005年10月25日International Business Machines CorporationManagement of a concurrent use license in a logically-partitioned computer
US69880742000年12月15日2006年1月17日Ge Medical Systems Global Technology Company, LlcImaging system protocol handling method and apparatus
US70132941997年7月15日2006年3月14日Shinko Electric Industries Co., Ltd.License management system
US70731972003年12月16日2006年7月4日Shieldip, Inc.Methods and apparatus for protecting information
US71071092000年6月1日2006年9月12日Touchtunes Music CorporationProcess for adjusting the sound volume of a digital sound recording
US71075942002年9月18日2006年9月12日Siebel Systems, Inc.Method and system for providing a version-independent interface to a computer resource
US71241942002年7月16日2006年10月17日Touchtunes Music CorporationAudiovisual distribution system for playing an audiovisual piece among a plurality of audiovisual devices connected to a central server through a network
US71311442003年12月16日2006年10月31日Shieldip, Inc.Methods and apparatus for protecting information
US71371142002年12月12日2006年11月14日International Business Machines CorporationDynamically transferring license administrative responsibilities from a license server to one or more other license servers
US71463402001年7月25日2006年12月5日Novell, Inc.Method and systems for licensing electronic data
US71883521995年10月12日2007年3月6日Touchtunes Music CorporationIntelligent digital audiovisual playback system
US72064172004年12月29日2007年4月17日Touchtunes Music CorporationWireless digital transmission system for loudspeakers
US72101182003年7月3日2007年4月24日International Business Machines CorporationMethod and apparatus for modifying relocatable object code filed and monitoring programs
US72101412000年10月13日2007年4月24日Touchtunes Music CorporationSystem for remote loading of objects or files in order to update software
US72316562000年7月24日2007年6月12日Touchtunes Music CorporationAudiovisual reproduction system
US72493762003年11月7日2007年7月24日Graphon Nes Sub, LlcFirewall providing enhanced network security and user transparency
US72871592004年4月1日2007年10月23日Shieldip, Inc.Detection and identification methods for software
US72932771999年7月21日2007年11月6日Touchtunes Music CorporationRemote control unit for intelligent digital audiovisual reproduction systems
US72994552003年8月15日2007年11月20日Cisco Technology, Inc.Remote monitoring of computer programs
US73568312005年6月20日2008年4月8日Touchtunes Music CorporationMethod for the distribution of audio-visual information and a system for the distribution of audio-visual information
US73602442005年12月29日2008年4月15日Graphon CorporationMethod for authenticating a user access request
US73802732005年12月29日2008年5月27日Graphon CorporationMethod for authenticating a user access request
US74065932003年5月2日2008年7月29日Shieldip, Inc.Method and apparatus for protecting information and privacy
US74247312000年8月22日2008年9月9日Touchtunes Music CorporationHome digital audiovisual information recording and playback system
US74247372004年5月6日2008年9月9日Graphon CorporationVirtual host for protocol transforming traffic traversing between an IP-compliant source and non-IP compliant destination
US74480572000年7月24日2008年11月4日Touchtunes Music CorporationAudiovisual reproduction system
US74839882001年3月8日2009年1月27日International Business Machines CorporationInformation transmission method and system
US75126322003年4月22日2009年3月31日Touchtunes Music CorporationDevice and process for remote management of a network of audiovisual information reproduction systems
US75194422006年7月31日2009年4月14日Touchtunes Music CorporationProcess for adjusting the sound volume of a digital sound recording
US75267362004年4月16日2009年4月28日IgtGaming device having touch activated alternating or changing symbol
US75499192000年10月17日2009年6月23日Touchtunes Music CorporationJukebox entertainment system having multiple choice games relating to music
US75689732006年9月5日2009年8月4日IgtServer based gaming system having multiple progressive awards
US75747272002年9月16日2009年8月11日Touchtunes Music CorporationIntelligent digital audiovisual playback system
US75852232007年7月30日2009年9月8日IgtServer based gaming system having multiple progressive awards
US76741802006年11月9日2010年3月9日IgtServer based gaming system having system triggered loyalty award sequences
US76953632003年9月9日2010年4月13日IgtGaming device having multiple display interfaces
US76996992004年9月28日2010年4月20日IgtGaming device having multiple selectable display interfaces based on player's wagers
US77478732005年3月4日2010年6月29日Shieldip, Inc.Method and apparatus for protecting information and privacy
US77490832004年5月14日2010年7月6日Touchtunes Music CorporationCommunication device and method between an audiovisual information playback system and an electronic game machine
US77572642007年5月3日2010年7月13日Touchtunes Music CorporationAudiovisual reproduction system
US77788792005年11月7日2010年8月17日Touchtunes Music CorporationProcess for ordering a selection in advance, digital system and jukebox for embodiment of the process
US77805232007年7月30日2010年8月24日IgtServer based gaming system having multiple progressive awards
US77837742006年7月27日2010年8月24日Touchtunes Music CorporationAudiovisual distribution system for playing an audiovisual piece among a plurality of audiovisual devices connected to a central server through a network
US77933312001年7月12日2010年9月7日Touchtunes Music CorporationCommunications method for an intelligent digital audiovisual reproduction system
US78197342009年5月12日2010年10月26日Touchtunes Music CorporationJukebox entertainment system having multiple choice games relating to music
US78226872007年3月26日2010年10月26日Brillon FrancoisJukebox with customizable avatar
US78419392006年9月5日2010年11月30日IgtServer based gaming system having multiple progressive awards
US78624302006年9月27日2011年1月4日IgtServer based gaming system having system triggered loyalty award sequences
US79057782007年7月30日2011年3月15日IgtServer based gaming system having multiple progressive awards
US79455392007年10月31日2011年5月17日Kinetech, Inc.Distributing and accessing data in a data processing system
US79455442007年10月31日2011年5月17日Kinetech, Inc.Similarity-based access control of data in a data processing system
US79496622003年12月23日2011年5月24日Kinetech, Inc.De-duplication of data in a data processing system
US79638472007年7月30日2011年6月21日IgtGaming system having multiple gaming machines which provide bonus awards
US79851332007年7月30日2011年7月26日IgtGaming system and method for providing an additional gaming currency
US79919952008年6月20日2011年8月2日Shieldip, Inc.Method and apparatus for protecting information and privacy
US79931992007年7月30日2011年8月9日IgtServer based gaming system having system triggered loyalty award sequences
US79964382008年8月26日2011年8月9日Touchtunes Music CorporationDevice and process for remote management of a network of audiovisual information reproduction systems
US80010962007年10月31日2011年8月16日Kinetech, Inc.Computer file system using content-dependent file identifiers
US80120092007年7月30日2011年9月6日IgtServer based gaming system having system triggered loyalty award sequences
US80212302007年7月30日2011年9月20日IgtGaming system having multiple gaming machines which provide bonus awards
US80525122010年9月21日2011年11月8日Touchtunes Music CorporationJukebox entertainment system having multiple choice games relating to music
US80822622007年3月15日2011年12月20日Level 3 Communications, LlcMethods, systems, and devices supporting data access in a data processing system
US80994202004年12月22日2012年1月17日Level 3 Communications, LlcAccessing data in a data processing system
US81170942007年6月29日2012年2月14日Microsoft CorporationDistribution channels and monetizing
US81284912006年9月5日2012年3月6日IgtServer based gaming system having multiple progressive awards
US81371882006年9月5日2012年3月20日IgtServer based gaming system having multiple progressive awards
US81653182006年8月31日2012年4月24日Touchtunes Music CorporationProcess for adjusting the sound volume of a digital sound recording
US81809092007年10月9日2012年5月15日Zvelo, Inc.Managed services platform
US82062122007年7月30日2012年6月26日IgtServer based gaming system having system triggered loyalty award sequences
US82109302007年7月30日2012年7月3日IgtServer based gaming system having system triggered loyalty award sequences
US82160622011年5月6日2012年7月10日IgtGaming system and method for providing an additional gaming currency
US82212182010年2月26日2012年7月17日IgtGaming device having multiple selectable display interfaces based on player's wagers
US82212262007年7月30日2012年7月17日IgtServer based gaming system having system triggered loyalty award sequences
US82335042007年7月16日2012年7月31日Hitachi, Ltd.Receiver set, information apparatus and receiving system
US82517912007年7月30日2012年8月28日IgtGaming system having multiple gaming machines which provide bonus awards
US82624692011年8月2日2012年9月11日IgtServer based gaming system having system triggered loyalty award sequences
US82663042005年6月16日2012年9月11日Zvelo, Inc.Managed services platform
US82790382006年11月3日2012年10月2日Endress + Hauser Flowtec AgMethod for operating a field device in automation engineering with special functionalities
US82927122011年9月21日2012年10月23日Touchtunes Music CorporationJukebox entertainment system having multiple choice games relating to music
US83274532010年4月27日2012年12月4日Shieldip, Inc.Method and apparatus for protecting information and privacy
US200900249842008年7月17日2009年1月22日Canon Kabushiki KaishaMethod of managing application software
EP1349041A21995年11月23日2003年10月1日ContentGuard Holdings, Inc.System for controlling the distribution and use of digital works using digital tickets
EP1657618A21998年2月25日2006年5月17日Intertrust Technologies Corp.Techniques for defining, using and manipulating rights management data structures
WO1996029639A21996年3月21日1996年9月26日Brindze, Paul, L.Interactive transaction management multimedia system
WO1997030575A21997年2月25日1997年8月28日Coley, Christopher, D.Automated system for management of licensed software
WO1998018079A11997年10月15日1998年4月30日Imagination SoftwareDistributed computer architecture and process for generating reusable software components
WO1998040805A21998年2月24日1998年9月17日Schwartz, David, CharlesMethod of synchronizing independently distributed software and database schema
WO1999004354A11997年7月15日1999年1月28日Patel, Supriya, K.A license management system
WO2001074138A22001年4月3日2001年10月11日Fontanesi, Dan, F.Software licensing system
WO2003063044A22003年1月21日2003年7月31日Intellitech CorporationManagement system, method and apparatus for licensed delivery and accounting of electronic circuits
WO2005003935A12004年5月28日2005年1月13日Doersch, WalterSystem and/or method for releasing release license software programs