US20140013449A1 - Delayed validation for software licensing and activation - Google Patents

Delayed validation for software licensing and activation Download PDF

Info

Publication number
US20140013449A1
US20140013449A1 US11/191,346 US19134605A US2014013449A1 US 20140013449 A1 US20140013449 A1 US 20140013449A1 US 19134605 A US19134605 A US 19134605A US 2014013449 A1 US2014013449 A1 US 2014013449A1
Authority
US
United States
Prior art keywords
activation
software
activations
machine
time period
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/191,346
Inventor
Shyam Sunder Vijay
Les G. Woolsey
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Adobe Systems Inc filed Critical Adobe Systems Inc
Priority to US11/191,346 priority Critical patent/US20140013449A1/en
Assigned to ADOBE SYSTEMS INCORPORATED reassignment ADOBE SYSTEMS INCORPORATED ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VIJAY, SHYAM SUNDER, WOOLSEY, LES G.
Publication of US20140013449A1 publication Critical patent/US20140013449A1/en
Priority to US14/922,680 priority patent/US9483625B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/107License processing; Key processing
    • G06F21/1077Recurrent authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/103Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measure for protecting copy right

Definitions

  • the application relates generally to data processing, and, more particularly, to delayed validation for software licensing and activation.
  • Licensing is an important part of software. Licensing protects the owner of the software from unauthorized use without remuneration. In addition, licensing protects the customer for the software from potential lawsuits because of license misuse. Typically, the license for software is validated at the time of installation and/or execution.
  • upgrades to hardware may not always keep pace with upgrades to software and vice versa.
  • Customers may upgrade their hardware at a rate that may outpace the upgrades to their software. Accordingly, customers may attempt to transfer their software on existing hardware to their upgraded hardware. However, allowing the ability to transfer must be weighed against massive distribution of a single copy of the software across a number of different machines.
  • a method, an apparatus and a system perform delayed validation for software licensing and activation.
  • a method includes receiving a request to execute a software application having a license. The method also includes permitting execution of the software application. The method includes validating the license subsequent to the permitting of the execution of the software application.
  • a method includes receiving a number of requests to render a number of templates.
  • the method also includes rendering the number of templates in accessible form.
  • the method also includes validating licenses of the number of templates subsequent to the rendering of the number of templates.
  • a method includes performing the following operations, in a server, subsequent to activations of a software application.
  • the operations include determining a total number of activations of the software application.
  • the operations include determining an activation time period for activation of the software application.
  • the operations also includes determining a number of activations in the activation time period.
  • the operations include updating an activation counter for the software application if the total number of activations is not equal to the number of activations in the activation time period or if more than one activation of the number of activations in the activation time period is for activation on a same client device.
  • a method includes receiving, from a first machine, a request to activate software on the first machine.
  • the method includes activating the software on the first machine in response to a determination that a number of activations for the software is less than a maximum number of allowed activations for the software.
  • the activating of the software includes incrementing an activation counter.
  • the method includes updating the activation counter, at a later time relative to activating the software, based on a number of activations in an activation time period for the software.
  • an apparatus in some embodiments, includes a machine-readable medium to store a template table.
  • the apparatus also includes a rendering logic to receive a request to render a template.
  • the rendering logic is to render the template.
  • the apparatus also includes a license validation logic to validate a license of the template after the template is rendered based on data stored in the template table.
  • an apparatus in some embodiments, includes a machine-readable medium to store an activation data structure, wherein an entry in the activation data structure is associated with a serial number of a software product and includes an activation counter.
  • the apparatus also includes an activation logic to receive a request to activate a software product on a device, wherein the activation logic is to allow activation of the software product if a total number of activations of the software product is not greater than a number of allowed activations of the software product, the activation logic to increment the activation counter as part of the activation of the software product.
  • the apparatus includes a counter update logic to recalculate the activation counter, subsequent to the activation of the software product based on an activation time period.
  • FIG. 1 illustrates a system for delayed validation of a software license, according to some embodiments of the invention.
  • FIG. 2 illustrates a more detailed block diagram of a server on which delayed validation of a software license is performed, according to some embodiments of the invention.
  • FIG. 3 illustrates a flow diagram for rendering a document based on a template, which is later validated on whether a software license was used for the template, according to some embodiments of the invention.
  • FIG. 4 illustrates a flow diagram for delayed validation of a software license, according to some embodiments of the invention.
  • FIG. 5 illustrates a system for delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 6 illustrates a more detailed block diagram of a server that includes delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 7 illustrates a more detailed block diagram of a machine that includes logic to perform software uninstallation that integrates transfer activation, which updates the activation counter, according to some embodiments of the invention.
  • FIG. 8 illustrates a flow diagram for software activation, according to some embodiments of the invention.
  • FIG. 9 illustrates a flow diagram for delayed updates to the counter for software activation, according to some embodiments of the invention.
  • FIG. 10 illustrates a flow diagram for software suite activation, according to some embodiments of the invention.
  • FIG. 11 illustrates a flow diagram for software uninstallation that integrates transfer activation, according to some embodiments of the invention.
  • FIG. 12 illustrates a computer device that executes software for performing operations related to delayed validation for software licensing and activation, according to some embodiments of the invention.
  • Some embodiments include delayed validation of a software license. Thus, there is no performance penalty for license validation that may include complex computations. Therefore, in some embodiments, the license is not validated or checked at the time the software is installed or executed. Some embodiments periodically validate license compliance for one to a number of software applications. For example, the license compliance for the software applications may be validated during off-peak times of day (e.g., each night at 12:00 a.m.). In particular, the validation may occur when the number of processing tasks is relatively low. By performing the validation at these times, the system is typically not heavily loaded so the cost of performing the calculations is negligible. In some embodiments, if the software license is not in compliance, an error message may be written to a system log, the user(s) may be notified, the software may not be subsequently executed, etc.
  • validation is for templates of documents, forms, etc., which may be modified by users. Whether a template is being modified and the degree of modification may determine whether a license is being used for this template. For example, a number of templates may be accessible for reading and/or modifying. If a template is modified beyond a given level, a license is considered being used. Therefore, if 1000 licenses are available, user(s) may only modify, beyond a certain level, 1000 templates to stay in compliance with the license. In some embodiments, what is being modified within a template and the amount of modification determines whether a license is used. For example, in some embodiments, if a new field is created in the template, a license is considered used. In some embodiments, if a field references a different location in a database for populating that field, a license is considered used. In some embodiments, the modification of a template is determined based on one or more hashes of data within the template.
  • FIG. 1 illustrates a system for delayed validation of a software license, according to some embodiments of the invention.
  • FIG. 1 illustrates a system 100 that includes an application server 102 , a utility server 104 and client machines 106 A- 106 N.
  • the client machines 106 A- 106 N may be representative of any apparatus, computer device, etc.
  • the client machines 106 A- 106 N may be a desktop computer, notebook computer, Personal Digital Assistant (PDA), a cellular telephone, etc.
  • PDA Personal Digital Assistant
  • the client machines 106 A- 106 N are coupled to the application server 102 .
  • the application server 102 is coupled to the utility server 104 .
  • the client machines 106 A- 106 N, the application server 102 and the utility server 104 may be coupled together in a number of different network configurations. For example, some embodiments may be incorporated into a distributed or peer-to-peer architecture system.
  • the client machines 106 A- 106 N, the application server 102 and the utility server 104 may be part of different types of networks including a Local Area Network, Wide Area Network, etc.
  • the network may be the Internet, an Intranet network, an Ethernet-based network, etc.
  • the client machines 106 A- 106 N may be executing different types of software applications.
  • the client machines 106 A- 106 N may be executing different types of business software.
  • the client machines 106 A- 106 N may access the application server 102 .
  • the client machines 106 A- 106 N may be accessing (including reading and modifying) templates for forms, documents, etc. as part of the execution of business software.
  • the client machines 106 A- 106 N may modify templates that are to be rendered into a Portable Document Format (PDF). Therefore, the client machines 106 A- 106 N may transmit templates to the application server 102 for rendering.
  • PDF Portable Document Format
  • the client machines 106 A- 106 N may request rendering of a template already stored thereon.
  • the application server 102 may transmit the templates to the utility server 104 to perform the rendering.
  • the utility server 104 may perform a delayed validation of the license for the template, as further described below.
  • FIG. 2 illustrates a more detailed block diagram of a server on which delayed validation of a software license is performed, according to some embodiments of the invention.
  • FIG. 2 illustrates a more detailed block diagram of the utility server 104 of FIG. 1 , according to some embodiments of the invention.
  • the utility server 104 includes a rendering logic 202 , a license validation logic 204 and a template table 206 .
  • the rendering logic 202 is coupled to the license validation logic 204 .
  • the license validation logic 204 is coupled to the template table 206 .
  • the rendering logic 202 and the license validation logic 204 may be representative of software, hardware, firmware or a combination thereof.
  • the rendering logic 202 and the license validation logic 204 may be software to be executed on a processor (not shown).
  • An example of the utility server 104 having this architecture is described in FIG. 12 below.
  • the template table 206 may be representative of any type of data structure that may be stored in a machine-readable medium.
  • FIG. 3 illustrates a flow diagram for rendering a document based on a template, which is later validated on whether a software license was used for the template, according to some embodiments of the invention.
  • the flow diagram 300 illustrates the operations of the utility server 104 and is described with reference to FIGS. 1 and 2 .
  • the rendering logic 202 receives a request to access a template.
  • the request may be received from the application server 102 based on a request from one of the client machines 106 .
  • a user of the client machine 106 A may be modifying a template using business software that is part of the application server 102 .
  • the flow continues at block 304 .
  • the license validation logic 204 determines whether the template is interactive.
  • a template is considered interactive if the result of the rendering operations is a form (e.g., a PDF form) that may be used or data captured.
  • the template is interactive if a user may enter data into fields or if a user may digitally sign the template.
  • the template is also interactive if a user can modify which entry in a database is associated with a field in the template.
  • the flow continues at block 310 , which is described in more detail below.
  • the flow continues at block 306 .
  • the license validation logic 204 determines whether a copy of the template is already stored in the template table 206 . Upon determining that the template is already stored in the template table 206 , the flow continues at block 310 , which is described in more detail below. Upon determining that the template is not already stored in the template table 206 , the flow continues at block 308 .
  • the license validation logic 204 stores a copy of the template in the template table 206 .
  • a copy of the template is stored because the template is subsequently used to perform the delayed validation of the license.
  • the data of the template includes one or more hashes. As further described below, based on whether the one or more hashes have been modified and the level of modification, the license validation logic 204 determines whether a license is used for the template access. The flow continues at block 310 .
  • the rendering logic 202 returns the template as rendered in accessible form.
  • the rendering logic 202 may render a PDF document based on the template.
  • FIG. 4 illustrates a flow diagram for delayed validation of a software license, according to some embodiments of the invention.
  • the flow diagram 400 illustrates the operations of the utility server 104 and is described with reference to FIGS. 1 and 2 .
  • the operations of the flow diagram 400 are performed subsequent to the operations of the flow diagram 300 .
  • the license validation may be performed during off-peak times of the day (e.g., each night at 12:00 a.m.).
  • the license validation logic 204 determines whether any of the templates stored in the template table 206 have a license state of “unknown”.
  • the license state may be defined as “unknown”, “payment required” or “payment not required”.
  • the license validation logic 204 sets the license state to “unknown” when the template is initially copied into the template table 206 . After validation, the license state is either set to “payment required” or “payment not required”, as further described below.
  • the flow Upon determining that there are no templates having a license state set to “unknown”, the flow continues at block 414 , which is described in more detail below.
  • the flow continues at block 404 .
  • the license validation logic 204 retrieves a template having a license state that is “unknown” from the template table 206 . The flow continues at block 406 .
  • the license validation logic 204 recalculates one or more hashes from data in the template.
  • the data representative of hashes may be incorporated into the data of the template.
  • the templates stored in the template table 206 may be received from clients 106 A- 106 N that may modify parts of the templates.
  • the license validation logic 204 may recalculate the one or more hashes stored in the data of the template to determine what types and level of modifications were made by the clients 106 A- 106 N.
  • one or more hashes are modified if substantive modifications are made to the template. Moreover, in some embodiments, hashes are not modified if aesthetic modifications are made to the template.
  • a substantive modification may include the adding of a new field to the template. Another substantive modification may include modifying which location in a database that a field references for populating the field. Aesthetic modifications may include changes to color, font, logos, etc.
  • the template is considered sufficiently modified such that a license is considered exercised for this template. The flow continues at block 408 .
  • the license validation logic 204 determines whether the one or more hashes are valid.
  • the license validation logic 204 may compare the recalculated hashes with the hashes of the template, original and unmodified by the clients 106 A- 106 N. If there are differences between the associated hashes for a given template, the hash is not considered valid.
  • the flow continues at block 410 .
  • the flow continues at block 412 .
  • the license validation logic 204 assigns the license state for the template as “payment required”.
  • the license validation logic 204 may update this attribute for the template in the template table 206 .
  • the license validation logic 204 marks this template as exercising a license. The flow continues at block 402 .
  • the license validation logic 204 assigns the license state for the template as “payment not required”.
  • the license validation logic 204 may update this attribute for the template in the template table 206 .
  • the license validation logic 204 marks this template as not exercising a license. The flow continues at block 402 .
  • the license validation logic 204 determines whether the number of templates with a license state as “payment required” is greater than the number of allowed licenses.
  • the number of allowed licenses may be for one to a number of different clients 106 .
  • the clients 106 may purchase N number of licenses. Accordingly, the clients 106 may be able to substantively modify N number of templates.
  • the operations of the flow diagram 400 are then complete.
  • the flow continues at block 416 .
  • the license validation logic 204 writes an error message to a system log.
  • the system log may be stored in the application server 102 or the utility server 104 .
  • An administrator of the system may have access to the system log. Accordingly, if the number of licenses is exceeded, the administrator is notified through the system log. The flow continues at block 418 .
  • the license validation logic 204 notifies the administrator that the number of licenses that have been exercised has exceeded the allowed limit, through a user interface.
  • the license validation logic 204 may also notify the administrator through email, etc.
  • the license validation logic 204 may deny future requests for rendering of templates in accessible form until the number of licenses is increased.
  • Some embodiments include delayed validation of a software activation.
  • the delayed validation of the software activation is based on an activation time period.
  • copies of software products or a suite of software products may include a limited license based on a serial number. In other words, a copy of a software product may not be activated on an unlimited number of machines.
  • a suite of software products may include one or more software products. While a copy of a software product or suite of software may be installed on any of a number of machines, in some embodiments, the copy of a software product or suite of software may only be activated on a limited number of machines. An activation may require communication with a server over a network prior to execution of the software.
  • the activation may be based on a serial number and other data that uniquely identifies the machine (such as a machine disk identifier (MDI) that uniquely identifies a hard disk drive of the machine on which the software is activated).
  • MDI machine disk identifier
  • an activation may be transferred to different machines. For example, if customers purchase a new machine, the customers may transfer the activation from an old machine to this new one.
  • the activation time period may be a period of time starting from the present and looking back a given period (e.g., three months, six months, 12 months, etc.). For a six-month activation time period, if an activation or deactivation occurs on July 1, the activation time period is from July 1 back to January 1 of the same year.
  • the limited activations are relative to the activation time period. For example, if two activations are allowed for a given software product, two activations are available in the activation time period. The given software product may have more activations beyond the activation time period. Such embodiments provide a trade-off between limiting the number of activations versus the processing of a large amount of customer service calls regarding the activation.
  • activations beyond the limited number are allowed outside the activation time period in exchange for a reduction in the number of customer service calls.
  • the cost would be that the copy of the software product is activated outside the activation time period.
  • the benefit is the reduction in the number of customer service calls from users attempting to activate on new hardware outside the activation time period.
  • the number of activations for a software application may be tracked using an activation counter.
  • the activation counter is incremented, and if a software application is deactivated, the activation counter is decremented. Some embodiments delay the updating of an activation counter relative to the activation time period off-line relative to the activations and deactivations. For example, the activation counter may be updated for one to a number of software applications each night at midnight.
  • FIG. 5 illustrates a system for delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 5 illustrates a system 500 that includes a machine 502 that is coupled to a server 504 through a network 506 .
  • the machine 502 may be representative of any apparatus, computer device, etc.
  • the machine 502 may be a desktop computer, notebook computer, Personal Digital Assistant (PDA), a cellular telephone, etc.
  • the machine 502 includes a software product A 510 that has been installed thereon.
  • the machine 502 also includes a client activation logic 512 .
  • the client activation logic 512 may be representative of software, hardware, firmware or a combination thereof.
  • the client activation logic 512 may be software to be executed on a processor (not shown).
  • FIG. 5 An example of the machine 502 having this architecture is described in FIG. 5 below.
  • FIG. 5 employs a client-server architecture, embodiments are not limited to such an architecture.
  • some embodiments may be incorporated into a distributed or peer-to-peer architecture system.
  • the network 506 may be different types of networks including a Local Area Network, Wide Area Network, etc.
  • the network 506 may be the Internet, an Intranet network, an Ethernet-based network, etc.
  • FIG. 5 also includes a number of operations that may be part of the activation of the software product A 510 .
  • the operations include an activation operation 526 and an activation result operation 528 .
  • the activation operation 526 is an operation to activate the software product A 510 on the machine 502 .
  • the activation operation 526 may be based on a user of the machine 502 attempting to activate the software product A 510 .
  • a copy of the software product A 510 may only be activated on a limited number of machines. Activation and deactivation of software products on machines are performed based on communications with the server 504 .
  • logic within the server 504 limits the number of activations for a copy of a software product using a license number of the software and a unique identification of the machines.
  • the logic within the server 504 accepts or denies activation of a copy of a software product based on the number of activations in a given activation time period.
  • An activation time period is a period that is between the present time and a point in the past.
  • an activation counter is used to track the number of activations for a given software application/product.
  • logic in the server 504 may delay (relative to the activation operation) updates to the activation counter based on the activation time period.
  • the logic within the server 504 receives the activation operation 526 and determines whether to perform the activation of the software product A 510 .
  • the result of this determination is the activation result operation 528 .
  • the logic within the server 504 returns a result of the activation back to the machine 502 .
  • the result may be an acceptance or denial of the attempt to perform the activation.
  • FIG. 6 illustrates a more detailed block diagram of a server that includes delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 6 illustrates a more detailed block diagram of the server 504 of FIG. 5 .
  • the server 504 includes a counter update logic 602 , an activation logic 603 and a machine-readable medium 604 .
  • the machine-readable medium 604 stores activation data structures 606 .
  • the activation data structures 606 may be tables, objects, data arrays, etc.
  • the counter update logic 602 and the activation logic 603 may be representative of software, hardware, firmware or a combination thereof.
  • the counter update logic 602 and the activation logic 603 may be software to be executed on a processor (not shown).
  • FIG. 9 An example of the server 504 having this architecture is described in FIG. 9 below.
  • the activation logic 603 may track activations/deactivations based on a unique identification of the machine or a component therein.
  • the unique identification may be a machine disk identifier.
  • the machine disk identifier is a value that is calculated based on information related to the hard disk drive (e.g., identifications of sectors or tracks of the hard disk drive).
  • the activation logic 603 may also track activations/deactivations based on an identification of a processor of the machine, the amount of memory, etc. In some embodiments, the activation logic 603 may also track activations/deactivations based on any combination of those identifications listed above.
  • the activation logic 603 may store these unique identifications along with a unique serial number for the license of the software product into the activation data structures 606 .
  • the counter update logic 602 may perform delayed updates (relayed to activation of software) to activation counters stored in the deactivation data structures 606 for one or more licenses of such software.
  • FIG. 7 illustrates a more detailed block diagram of a machine that includes logic to perform software uninstallation that integrates transfer activation, which updates the activation counter, according to some embodiments of the invention.
  • FIG. 7 illustrates a more detailed block diagram of the machine 502 of FIG. 5 .
  • the machine 502 includes an uninstall logic 702 , a license validation logic 704 , license data 708 and anchor data 710 .
  • the uninstall logic 702 and the license validation logic 704 may be representative of software, hardware, firmware or a combination thereof.
  • the uninstall logic 702 and the license validation logic 704 may be software to be executed on a processor (not shown).
  • the machine also includes license data 708 and anchor data 710 , which may be files, data stored as part of a file, etc.
  • the anchor data 710 may include data indicating the time when the software product was installed on the machine 102 .
  • the anchor data 710 may also include data related to activation (whether the software product is activated, when activated, etc.).
  • FIG. 8 illustrates a flow diagram for software activation, according to some embodiments of the invention.
  • the flow diagram 800 illustrates the operations of the activation logic 603 .
  • the activation logic 603 receives a request to activate a software application. With reference to FIG. 5 , the client activation logic 512 transmits the request. The flow continues at block 804 .
  • the activation logic 603 determines whether an activation counter for the software application equals to a maximum number of allowed activations.
  • the activation logic 603 may retrieve an entry from the activation data structures 606 that is associated with the software application based on a serial number. The entry may include the activation counter and the maximum number of allowed activations for the software application.
  • the flow continues at block 806 .
  • the flow continues at block 808 , which is described in more detail below.
  • the activation logic 603 transmits a communication back to the machine 502 that indicates that the activation was denied. Therefore, the activation logic 603 does not update the activation counter for this software. The flow continues at block 808 .
  • the activation logic 603 updates the activation counter for the software application. In particular, the activation logic 603 increments the activation counter to account for the new activation. The flow continues at block 810 .
  • the activation logic 603 transmits a communication back to the machine 502 that the activation was accepted.
  • the operations of the flow diagram 800 are complete.
  • FIG. 9 illustrates a flow diagram for delayed updates to the counter for software activation, according to some embodiments of the invention.
  • the flow diagram 900 illustrates the operations of the counter update logic 602 . In some embodiments, these operations may be performed periodically and during an off-peak time of day. For example, these operations may be performed once a night at 12:00 a.m.
  • the counter update logic 602 performs these operations for any of a number of software applications.
  • the counter update logic 602 may update all of the activation counters (for the different software applications) stored in the activation data structures 606 .
  • the counter update logic 602 determines the activation time period for the software application.
  • the activation time period may be stored in the entry in the activation data structures 606 associated with the software application. As described above, the activation time period may be a time period starting from the present and looking back a given period (e.g., three months, six months, 12 months, etc.). The flow continues at block 904 .
  • the counter update logic 602 determines the number of activations in the activation time period.
  • the counter update logic 602 may determine this number based on the data stored in the activation data structures 606 .
  • the activation logic 603 may store the date of activation for each machine for a given serial number of a software application. The flow continues at block 906 .
  • the counter update logic 602 determines whether there are any activations outside the activation time period. In particular, if any activations are outside the activation time period, the counter update logic 602 needs to update the activation counter for this software application. Upon determining that there are no activations outside the activation time period, the flow continues at block 910 , which is described in more detail below. Upon determining that there are activations outside the activation time period, the flow continues at block 908 .
  • the counter update logic 602 updates the activation counter based on the activation time period.
  • the activation counter may include activations outside the activation time period.
  • the activation logic 603 updates the activation counter independent of the activation time period (as shown in FIG. 8 ). Accordingly, the time to complete the activation is less (in comparison to if the activation logic 603 included the activation time period in the determination of activation shown in FIG. 8 ). Therefore, the counter update logic 602 updates the number of activation based on the number of activations in the activation time period.
  • the activation logic 603 would have set the activation counter to nine (based on the operations in FIG. 8 ). Therefore, the counter update logic 602 sets the activation counter to five (based on the activation in the activation time period). The flow continues at block 910 .
  • the counter update logic 602 determines whether there are multiple activations for a same machine in the activation time period.
  • the counter update logic 602 may make this determination based on the data stored in the table in the activation data structures 606 for this software application.
  • the table may store the identification of the machines on which the activation is performed.
  • the operations of the flow diagram 900 are complete.
  • the flow continues at block 912 .
  • the counter update logic 602 updates the activation counter based on the multiple activations for a same machine in the activation time period. For example, if the same machine was updated 20 times in the activation time period, the counter update logic 602 marks this as only a single activation. Thus, in some embodiments, for each unique machine activated in the activation time period, the counter update logic 602 increments the activation counter by one. The operations of the flow diagram 900 are complete.
  • FIG. 10 illustrates a flow diagram for software suite activation, according to some embodiments of the invention.
  • the flow diagram 1000 illustrates the operations for activating a software suite having a number of individual software products on a machine. Moreover, such operations are described wherein a copy of one of the individual software products is already activated on the machine. Such operations may be performed for a greater number of activated individual software products.
  • the flow diagram 1000 is described with reference to the components of FIGS. 5-7 .
  • the flow diagram 1000 commences at block 1002 .
  • the client activation logic 512 of a machine may receive a copy of a software suite (that includes a number of software products) for installation on the machine.
  • the machine 502 may include an input/output logic for receiving the copy of the software suite for installation. Examples of different I/O logic are shown in FIG. 12 that is described below.
  • the flow continues at block 1004 .
  • the client activation logic 512 determines whether a copy of one of the number of software products is already activated on the machine. In some embodiments, the client activation logic 512 may make this determination based on the existence of a file stored on the hard disk drive of the machine 502 , the setting of a flag in a file that is part of the installation of the software product, etc. In some embodiments, the client activation logic 512 may make this determination based on a query to the activation logic 603 on the server 504 over the network 506 . Upon determining that a copy of one of the number of software products is not already activated on the machine 502 , the flow continues at block 1012 , which is described in more detail below.
  • the client activation logic 512 deactivates the copy of the software product on the machine 502 .
  • the client activation logic 512 communicates a deactivation message to the activation logic 603 of the server 504 .
  • the activation logic 603 of the server 504 may deactivate the license of the copy of the software product A 510 for the machine 502 .
  • the activation logic 603 may update a data structure for the software product in the activation data structures 606 .
  • the activation logic 603 decrements the activation counter within the data structure for this software product.
  • the copy may be activated on a different machine. Therefore, the individual copy of the software product is not adopted by the software suite prior to deactivation, thereby allowing for reuse of the license of the software product A 510 .
  • the flow continues at block 1007 .
  • the client activation logic 512 notifies a user that is performing the installation of the software suite that the license of the software product A 510 is now deactivated on the machine 502 .
  • the client activation logic 512 may also notify the user that the license is now available for use on a different machine. This notification may be through a pop-message during the activation, an email message, a telephone call, etc.
  • the flow continues at block 1008 .
  • the client activation logic 512 changes a serial number of the copy of the software product A 510 to match a serial number of the copy of the software suite.
  • the serial numbers may be stored in one or more locations in files in storage on the machine 502 . Accordingly, the client activation logic 512 updates the serial number in those locations.
  • the flow continues at block 1010 .
  • the client activation logic 512 redirects a license of the copy of the software product A 510 to a license of the copy of the software suite.
  • the client activation logic 512 may perform this redirection based on creation of a file, setting a flag in a file, etc. Therefore, if a change is to occur to a license of the software suite, the same change will be made to the license of the copy of the software A product 510 and vice versa.
  • Logic that is to make changes to the license may be updated accordingly. For example, if the license of the software suite is to be transferred to a different machine, to be deactivated, etc., the logic to perform this operation may check for the existence of a certain file. Upon determining that this file exists, the logic may perform the same operation to the license of the software A product 510 . The flow continues at block 1012 .
  • the client activation logic 512 activates the copy of the software suite.
  • the client activation logic 512 may activate the copy of the software suite by sending an activation message to the activation logic 603 on the server 504 .
  • the activation logic 603 on the server 504 may determine whether the copy of the software suite may be activated. For example, individual data structures may be stored in the activation data structures 606 for the software suite. These individual data structures may include activation counters for the different copies of the software suites that are tracked based on serial numbers (similar to the activation counters for the individual software products). Therefore, if the copy of the software suite has already been activated for a set limit, the activation logic 603 may deny activation and transmit a deny message back to the machine 502 .
  • the activation logic 603 updates its number of activations for this copy of the software suite and sends an activation message back to the machine 502 . Therefore, in some embodiments, delayed updates may be performed for the activation counters for the software suites.
  • Embodiments are not limited to the operations shown in the flow diagram 1000 .
  • the activation of the software suite may cause the adoption of the individual copy of the software product but not cause the deactivation of the individual copy of the software product.
  • the activation of the software suite may cause the deactivation of the individual copy of the software product, but not cause the adoption of the individual copy of the software product.
  • FIG. 11 illustrates a flow diagram for software uninstallation that integrates transfer activation, according to some embodiments of the invention.
  • the flow diagram 1100 is described with reference to the components of FIGS. 5-7 .
  • the flow diagram 1100 commences at block 1102 .
  • the uninstall logic 702 receives a command to uninstall a software product that is installed on the machine 102 .
  • the command may be generated from an uninstall application that is executed by a user of the machine 502 to uninstall the software product A 510 .
  • the flow continues at block 1104 .
  • the license validation logic 704 determines whether the license of the software product A 510 is valid. Once the command to uninstall is received, the uninstall logic 702 may call the license validation logic 704 to perform this determination. The license validation logic 704 may make this determination by validating the license data 708 . For example, the license validation logic 704 may check whether a valid value is stored for the license in the license data 708 . Upon determining that the license of the software product A 510 is not valid, the flow continues at block 1118 , which is described in more detail below. Upon determining that the license of the software product A 510 is valid, the flow continues at block 1106 .
  • the license validation logic 704 determines whether the software product A 510 is activated. In some embodiments, the license validation logic 704 determines whether the anchor data 710 includes an indication that the software product A 510 has been activated. In some embodiments, the software product A 510 may be executed on the machine 502 for a trial period without requiring the software to be activated. This may be any predetermined time period (e.g., 30 days) from the time of installation. The data representative of this predetermined time period may be stored in the anchor data 710 . Therefore, if the software product A 510 is not activated, the license validation logic 704 may check the anchor data 710 if the software product A 510 has been installed within the predetermined time period.
  • the software product A 510 may be executed on the machine 502 for a trial period without requiring the software to be activated. This may be any predetermined time period (e.g., 30 days) from the time of installation. The data representative of this predetermined time period may be stored in the anchor data 710 . Therefore, if
  • the license of the software product A 510 is considered activated.
  • the flow continues at block 1112 , which is described in more detail below.
  • the flow continues at block 1108 .
  • the uninstall logic 702 determines whether the user (that initiated the uninstall) has selected an option to perform a transfer activation of the software product A prior to the uninstall.
  • the uninstall logic 702 may cause a Graphical User Interface (GUI) window to be opened on a monitor of the device 102 that allows the user to make the selection.
  • GUI Graphical User Interface
  • the flow continues at block 1114 , which is described in more detail below.
  • the flow continues at block 1110 .
  • the client activation logic 512 performs the transfer activation of the software product A 510 .
  • the client activation logic 512 may transmit a communication to the activation logic 603 on the server 504 .
  • the communication may include the serial number associated with the software product A 510 and the identification of the machine 502 .
  • the communication includes an indication that the software product A 510 is to be deactivated for the machine 502 .
  • the activation logic 603 may update the deactivation data structures 306 to reflect this deactivation. In some embodiments, based on the transfer activation, the activation logic 603 decrements the activation counter within the data structure for this software product.
  • the activation logic 603 may transmit a communication back to the client activation logic 512 that is indicative of whether the transfer activation was successful. The flow continues at block 1112 .
  • the client activation logic 512 determines whether the transfer activation of the software product A 510 was successful. The client activation logic 512 may make this determination based on if a successful communication is received back from the activation logic 603 of the server 504 . The transfer activation may not be successful if the network 506 or the server 504 is not operational, if the data that the activation logic 603 is to update is not accessible, corrupted, etc., if the data transmitted over the network is corrupted, etc. Upon determining that the transfer activation was successful, the flow continues at block 1118 , which is described in more detail below. Upon determining that the transfer activation was not successful, the flow continues at block 1114 .
  • the uninstall logic 702 determines whether the user selected an advanced uninstall of the software product A 510 .
  • the uninstall logic 702 may cause a GUI window to be opened on a monitor of the device 502 that allows the user to make the selection.
  • the flow continues at block 1118 , which is described in more detail below.
  • the flow continues at block 1116 .
  • the uninstall logic 702 performs the standard uninstall of the software product A 510 .
  • the uninstall logic 702 may remove application files, update registry data, etc.
  • the uninstall logic 702 does not remove the data related to the activation of the copy of the software product A 510 and the anchor data 710 .
  • the standard uninstall operation preserves the activation data on the machine, which allows users to reinstall the copy of the software product A 510 without reactivating of the software.
  • a standard uninstall operation may be executed for users who plan on re-installing the software product on the same machine. The flow diagram 1100 is then complete.
  • the uninstall logic 702 performs the advanced uninstall of the software product A 510 .
  • the uninstall logic 702 may remove application files, update registry data, etc.
  • the uninstall logic 702 may remove the activation data.
  • the uninstall logic 702 may remove all data and files associated with the software product A, except for the data (stored in the anchor data 710 ) that indicates that the software has been installed and time of installation. Such data may remain to preclude users from cyclically installing and uninstalling the software to stay within the trial period and continuing using the product beyond its intended use as a trial. Accordingly, the users are required to activate the software.
  • the user may select the advanced uninstall operation if the trial period has expired and the user has not activated the software.
  • the user may also select the advanced uninstall operation if the user has already transferred the activation.
  • the user may select the advanced uninstall operation if the license of the software is corrupt and requires reactivation.
  • the flow diagram 1100 is then complete.
  • Embodiments are not limited to the operations shown in the flow diagram 1100 .
  • a transfer activation may not be performed. Rather, a standard uninstall of the software product is performed without a transfer activation.
  • FIG. 12 illustrates a computer device that executes software for performing operations related to delayed validation for software licensing and activation, according to some embodiments of the invention.
  • FIG. 12 illustrates a computer device 1200 that may be representative of the application server 102 , the utility server 104 , the clients 106 A- 106 N, the machine 502 or the server 504 .
  • the computer system 1200 comprises processor(s) 1202 .
  • the computer system 1200 also includes a memory unit 1230 , processor bus 1222 , and Input/Output controller hub (ICH) 1224 .
  • the processor(s) 1202 , the memory unit 1230 , and the ICH 1224 are coupled to the processor bus 1222 .
  • the processor(s) 1202 may comprise any suitable processor architecture.
  • the computer system 1200 may comprise one, two, three, or more processors, any of which may execute a set of instructions in accordance with embodiments of the invention.
  • the memory unit 1230 may store data and/or instructions, and may comprise any suitable memory, such as a random access memory (DRAM).
  • DRAM random access memory
  • the memory 1230 may be a Synchronous RAM (SRAM), a Synchronous Dynamic RAM (SDRAM), DRAM, a double data rate (DDR) Synchronous Dynamic RAM (SDRAM), etc.
  • SRAM Synchronous RAM
  • SDRAM Synchronous Dynamic RAM
  • DDR double data rate Synchronous Dynamic RAM
  • SDRAM double data rate
  • the computer system 1200 also includes IDE drive(s) 1208 and/or other suitable storage devices.
  • a graphics controller 1204 controls the display of information on a display device 1206 , according to some embodiments of the invention.
  • the input/output controller hub (ICH) 1224 provides an interface to I/O devices or peripheral components for the computer system 1200 .
  • the ICH 1224 may comprise any suitable interface controller to provide for any suitable communication link to the processor(s) 1202 , memory unit 1230 and/or to any suitable device or component in communication with the ICH 1224 .
  • the ICH 1224 provides suitable arbitration and buffering for each interface.
  • the ICH 1224 provides an interface to one or more suitable integrated drive electronics (IDE) drives 1208 , such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive, or to suitable universal serial bus (USB) devices through one or more USB ports 1210 .
  • IDE integrated drive electronics
  • the ICH 1224 also provides an interface to a keyboard 1212 , mouse 1214 , CD-ROM drive 1218 , or other suitable devices through one or more firewire ports 1216 .
  • the ICH 1224 also provides a network interface 1220 though which the computer system 1200 can communicate with other computers and/or devices.
  • the ICH 1224 is connected to a wireless interface, which enables the computer system 1200 to wirelessly connect to computing devices using any suitable wireless communication protocol (e.g., 802.11b, 802.11g, etc.).
  • the computer system 1200 includes a machine-readable medium that stores a set of instructions (e.g., software) embodying any one, or all, of the methodologies described herein.
  • software may reside, completely or at least partially, within memory unit 1230 and/or within the processor(s) 1202 .
  • the memory 1230 and/or one of the IDE/ATA drives 1208 may store the rendering logic 202 , the license validation logic 204 , the software product A 510 , the client activation logic 512 , the counter update logic 602 , the activation logic 603 , the uninstall logic 702 , the license validation logic 704 , the license data 708 and the anchor data 710 .
  • the rendering logic 202 , the license validation logic 204 , the software product A 510 , the client activation logic 512 , the counter update logic 602 , the activation logic 603 , the uninstall logic 702 and the license validation logic 704 may be instructions executing within the processor(s) 1202 .
  • the rendering logic 202 , the license validation logic 204 , the client activation logic 512 , the counter update logic 602 , the activation logic 603 , the uninstall logic 702 and the license validation logic 704 may be stored in a machine-readable medium that are a set of instructions (e.g., software) embodying any one, or all, of the methodologies described herein.
  • the rendering logic 202 , the license validation logic 204 , the client activation logic 512 , the counter update logic 602 , the activation logic 603 , the uninstall logic 702 and the license validation logic 704 may reside, completely or at least partially, within the memory 1230 , the processor(s) 1202 , one of the IDE/ATA drive(s) 1208 , etc.
  • references in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
  • Embodiments of the invention include features, methods or processes that may be embodied within machine-executable instructions provided by a machine-readable medium.
  • a machine-readable medium includes any mechanism which provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.).
  • a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.), as well as electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.).
  • volatile and/or non-volatile media e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.
  • electrical, optical, acoustical or other form of propagated signals e.g., carrier waves, infrared signals, digital signals, etc.
  • Such instructions are utilized to cause a general or special purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention.
  • the features or operations of embodiments of the invention are performed by specific hardware components which contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components.
  • Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.
  • a number of figures show block diagrams of systems and apparatus for delayed validation for software licensing and activation, in accordance with some embodiments of the invention.
  • a number of figures show flow diagrams that illustrate the operations for delayed validation for software licensing and activation, in accordance with some embodiments of the invention.
  • the operations of the flow diagram are described with references to the systems/apparatus shown in the block diagrams. However, it should be understood that the operations of the flow diagram could be performed by embodiments of systems and apparatus other than those discussed with reference to the block diagrams, and embodiments discussed with reference to the systems/apparatus could perform operations different than those discussed with reference to the flow diagram.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

According to some embodiments, a method, an apparatus and a system perform delayed validation for software licensing and activation. In some embodiments, a method includes receiving a request to execute a software application having a license. The method also includes permitting execution of the software application. The method includes validating the license subsequent to the permitting of the execution of the software application.

Description

    TECHNICAL FIELD
  • The application relates generally to data processing, and, more particularly, to delayed validation for software licensing and activation.
  • BACKGROUND
  • Licensing is an important part of software. Licensing protects the owner of the software from unauthorized use without remuneration. In addition, licensing protects the customer for the software from potential lawsuits because of license misuse. Typically, the license for software is validated at the time of installation and/or execution.
  • Also, with regard to software, upgrades to hardware may not always keep pace with upgrades to software and vice versa. Customers may upgrade their hardware at a rate that may outpace the upgrades to their software. Accordingly, customers may attempt to transfer their software on existing hardware to their upgraded hardware. However, allowing the ability to transfer must be weighed against massive distribution of a single copy of the software across a number of different machines.
  • SUMMARY
  • According to some embodiments, a method, an apparatus and a system perform delayed validation for software licensing and activation. In some embodiments, a method includes receiving a request to execute a software application having a license. The method also includes permitting execution of the software application. The method includes validating the license subsequent to the permitting of the execution of the software application.
  • In some embodiments, a method includes receiving a number of requests to render a number of templates. The method also includes rendering the number of templates in accessible form. The method also includes validating licenses of the number of templates subsequent to the rendering of the number of templates.
  • In some embodiments, a method includes performing the following operations, in a server, subsequent to activations of a software application. The operations include determining a total number of activations of the software application. The operations include determining an activation time period for activation of the software application. The operations also includes determining a number of activations in the activation time period. The operations include updating an activation counter for the software application if the total number of activations is not equal to the number of activations in the activation time period or if more than one activation of the number of activations in the activation time period is for activation on a same client device.
  • In some embodiments, a method includes receiving, from a first machine, a request to activate software on the first machine. The method includes activating the software on the first machine in response to a determination that a number of activations for the software is less than a maximum number of allowed activations for the software. The activating of the software includes incrementing an activation counter. The method includes updating the activation counter, at a later time relative to activating the software, based on a number of activations in an activation time period for the software.
  • In some embodiments, an apparatus includes a machine-readable medium to store a template table. The apparatus also includes a rendering logic to receive a request to render a template. The rendering logic is to render the template. The apparatus also includes a license validation logic to validate a license of the template after the template is rendered based on data stored in the template table.
  • In some embodiments, an apparatus includes a machine-readable medium to store an activation data structure, wherein an entry in the activation data structure is associated with a serial number of a software product and includes an activation counter. The apparatus also includes an activation logic to receive a request to activate a software product on a device, wherein the activation logic is to allow activation of the software product if a total number of activations of the software product is not greater than a number of allowed activations of the software product, the activation logic to increment the activation counter as part of the activation of the software product. The apparatus includes a counter update logic to recalculate the activation counter, subsequent to the activation of the software product based on an activation time period.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Embodiments of the invention may be best understood by referring to the following description and accompanying drawings which illustrate such embodiments. The numbering scheme for the Figures included herein are such that the leading number for a given reference number in a Figure is associated with the number of the Figure. For example, a system 100 can be located in FIG. 1. However, reference numbers are the same for those elements that are the same across different Figures. In the drawings:
  • FIG. 1 illustrates a system for delayed validation of a software license, according to some embodiments of the invention.
  • FIG. 2 illustrates a more detailed block diagram of a server on which delayed validation of a software license is performed, according to some embodiments of the invention.
  • FIG. 3 illustrates a flow diagram for rendering a document based on a template, which is later validated on whether a software license was used for the template, according to some embodiments of the invention.
  • FIG. 4 illustrates a flow diagram for delayed validation of a software license, according to some embodiments of the invention.
  • FIG. 5 illustrates a system for delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 6 illustrates a more detailed block diagram of a server that includes delayed validation of software activation based on an activation time period, according to some embodiments of the invention.
  • FIG. 7 illustrates a more detailed block diagram of a machine that includes logic to perform software uninstallation that integrates transfer activation, which updates the activation counter, according to some embodiments of the invention.
  • FIG. 8 illustrates a flow diagram for software activation, according to some embodiments of the invention.
  • FIG. 9 illustrates a flow diagram for delayed updates to the counter for software activation, according to some embodiments of the invention.
  • FIG. 10 illustrates a flow diagram for software suite activation, according to some embodiments of the invention.
  • FIG. 11 illustrates a flow diagram for software uninstallation that integrates transfer activation, according to some embodiments of the invention.
  • FIG. 12 illustrates a computer device that executes software for performing operations related to delayed validation for software licensing and activation, according to some embodiments of the invention.
  • DETAILED DESCRIPTION
  • Methods, apparatus and systems for delayed validation for software licensing and activation are described. In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures and techniques have not been shown in detail in order not to obscure the understanding of this description. Additionally, in this description, the phrase “exemplary embodiment” means that the embodiment being referred to serves as an example or illustration.
  • Delayed Validation of a Software License
  • Some embodiments include delayed validation of a software license. Thus, there is no performance penalty for license validation that may include complex computations. Therefore, in some embodiments, the license is not validated or checked at the time the software is installed or executed. Some embodiments periodically validate license compliance for one to a number of software applications. For example, the license compliance for the software applications may be validated during off-peak times of day (e.g., each night at 12:00 a.m.). In particular, the validation may occur when the number of processing tasks is relatively low. By performing the validation at these times, the system is typically not heavily loaded so the cost of performing the calculations is negligible. In some embodiments, if the software license is not in compliance, an error message may be written to a system log, the user(s) may be notified, the software may not be subsequently executed, etc.
  • In some embodiments, validation is for templates of documents, forms, etc., which may be modified by users. Whether a template is being modified and the degree of modification may determine whether a license is being used for this template. For example, a number of templates may be accessible for reading and/or modifying. If a template is modified beyond a given level, a license is considered being used. Therefore, if 1000 licenses are available, user(s) may only modify, beyond a certain level, 1000 templates to stay in compliance with the license. In some embodiments, what is being modified within a template and the amount of modification determines whether a license is used. For example, in some embodiments, if a new field is created in the template, a license is considered used. In some embodiments, if a field references a different location in a database for populating that field, a license is considered used. In some embodiments, the modification of a template is determined based on one or more hashes of data within the template.
  • FIG. 1 illustrates a system for delayed validation of a software license, according to some embodiments of the invention. In particular, FIG. 1 illustrates a system 100 that includes an application server 102, a utility server 104 and client machines 106A-106N. The client machines 106A-106N may be representative of any apparatus, computer device, etc. For example, the client machines 106A-106N may be a desktop computer, notebook computer, Personal Digital Assistant (PDA), a cellular telephone, etc.
  • The client machines 106A-106N are coupled to the application server 102. The application server 102 is coupled to the utility server 104. The client machines 106A-106N, the application server 102 and the utility server 104 may be coupled together in a number of different network configurations. For example, some embodiments may be incorporated into a distributed or peer-to-peer architecture system. The client machines 106A-106N, the application server 102 and the utility server 104 may be part of different types of networks including a Local Area Network, Wide Area Network, etc. For example, the network may be the Internet, an Intranet network, an Ethernet-based network, etc.
  • In some embodiments, the client machines 106A-106N may be executing different types of software applications. For example, the client machines 106A-106N may be executing different types of business software. As part of the execution of the software, the client machines 106A-106N may access the application server 102. For example, the client machines 106A-106N may be accessing (including reading and modifying) templates for forms, documents, etc. as part of the execution of business software. In some embodiments, the client machines 106A-106N may modify templates that are to be rendered into a Portable Document Format (PDF). Therefore, the client machines 106A-106N may transmit templates to the application server 102 for rendering. Alternatively, the client machines 106A-106N may request rendering of a template already stored thereon. The application server 102 may transmit the templates to the utility server 104 to perform the rendering. Moreover, the utility server 104 may perform a delayed validation of the license for the template, as further described below.
  • FIG. 2 illustrates a more detailed block diagram of a server on which delayed validation of a software license is performed, according to some embodiments of the invention. In particular, FIG. 2 illustrates a more detailed block diagram of the utility server 104 of FIG. 1, according to some embodiments of the invention. The utility server 104 includes a rendering logic 202, a license validation logic 204 and a template table 206. The rendering logic 202 is coupled to the license validation logic 204. The license validation logic 204 is coupled to the template table 206.
  • The rendering logic 202 and the license validation logic 204 may be representative of software, hardware, firmware or a combination thereof. For example, the rendering logic 202 and the license validation logic 204 may be software to be executed on a processor (not shown). An example of the utility server 104 having this architecture is described in FIG. 12 below. The template table 206 may be representative of any type of data structure that may be stored in a machine-readable medium.
  • A more detailed description of the operations for delayed validation of a software license, according to some embodiments, is now described. FIG. 3 illustrates a flow diagram for rendering a document based on a template, which is later validated on whether a software license was used for the template, according to some embodiments of the invention. The flow diagram 300 illustrates the operations of the utility server 104 and is described with reference to FIGS. 1 and 2.
  • At block 302, the rendering logic 202 receives a request to access a template. The request may be received from the application server 102 based on a request from one of the client machines 106. For example, a user of the client machine 106A may be modifying a template using business software that is part of the application server 102. The flow continues at block 304.
  • At block 304, the license validation logic 204 determines whether the template is interactive. In some embodiments, a template is considered interactive if the result of the rendering operations is a form (e.g., a PDF form) that may be used or data captured. For example, the template is interactive if a user may enter data into fields or if a user may digitally sign the template. The template is also interactive if a user can modify which entry in a database is associated with a field in the template. Upon determining that the template is not interactive, the flow continues at block 310, which is described in more detail below. Upon determining that the template is interactive, the flow continues at block 306.
  • At block 306, the license validation logic 204 determines whether a copy of the template is already stored in the template table 206. Upon determining that the template is already stored in the template table 206, the flow continues at block 310, which is described in more detail below. Upon determining that the template is not already stored in the template table 206, the flow continues at block 308.
  • At block 308, the license validation logic 204 stores a copy of the template in the template table 206. A copy of the template is stored because the template is subsequently used to perform the delayed validation of the license. In some embodiments, the data of the template includes one or more hashes. As further described below, based on whether the one or more hashes have been modified and the level of modification, the license validation logic 204 determines whether a license is used for the template access. The flow continues at block 310.
  • At block 308, the rendering logic 202 returns the template as rendered in accessible form. For example, the rendering logic 202 may render a PDF document based on the template.
  • A more detailed description of the operations for validation of a software license, according to some embodiments, is now described. FIG. 4 illustrates a flow diagram for delayed validation of a software license, according to some embodiments of the invention. The flow diagram 400 illustrates the operations of the utility server 104 and is described with reference to FIGS. 1 and 2. In some embodiments, the operations of the flow diagram 400 are performed subsequent to the operations of the flow diagram 300. For example, the license validation may be performed during off-peak times of the day (e.g., each night at 12:00 a.m.).
  • At block 402, the license validation logic 204 determines whether any of the templates stored in the template table 206 have a license state of “unknown”. In some embodiments, the license state may be defined as “unknown”, “payment required” or “payment not required”. In some embodiments, the license validation logic 204 sets the license state to “unknown” when the template is initially copied into the template table 206. After validation, the license state is either set to “payment required” or “payment not required”, as further described below. Upon determining that there are no templates having a license state set to “unknown”, the flow continues at block 414, which is described in more detail below. Upon determining that there is at least one template having a license state set to “unknown”, the flow continues at block 404.
  • At block 404, the license validation logic 204 retrieves a template having a license state that is “unknown” from the template table 206. The flow continues at block 406.
  • At block 406, the license validation logic 204 recalculates one or more hashes from data in the template. In particular, the data representative of hashes may be incorporated into the data of the template. The templates stored in the template table 206 may be received from clients 106A-106N that may modify parts of the templates. The license validation logic 204 may recalculate the one or more hashes stored in the data of the template to determine what types and level of modifications were made by the clients 106A-106N.
  • In some embodiments, one or more hashes are modified if substantive modifications are made to the template. Moreover, in some embodiments, hashes are not modified if aesthetic modifications are made to the template. A substantive modification may include the adding of a new field to the template. Another substantive modification may include modifying which location in a database that a field references for populating the field. Aesthetic modifications may include changes to color, font, logos, etc. In some embodiments, if substantive modifications are made, the template is considered sufficiently modified such that a license is considered exercised for this template. The flow continues at block 408.
  • At block 408, the license validation logic 204 determines whether the one or more hashes are valid. The license validation logic 204 may compare the recalculated hashes with the hashes of the template, original and unmodified by the clients 106A-106N. If there are differences between the associated hashes for a given template, the hash is not considered valid. Upon determining that the one or more hashes are not valid, the flow continues at block 410. Upon determining that the one or more hashes are valid, the flow continues at block 412.
  • At block 410, the license validation logic 204 assigns the license state for the template as “payment required”. The license validation logic 204 may update this attribute for the template in the template table 206. In particular, because substantive modifications were made to the template, the license validation logic 204 marks this template as exercising a license. The flow continues at block 402.
  • At block 412, the license validation logic 204 assigns the license state for the template as “payment not required”. The license validation logic 204 may update this attribute for the template in the template table 206. In particular, because no substantive (possibly only aesthetic) modifications were made to the template, the license validation logic 204 marks this template as not exercising a license. The flow continues at block 402.
  • At block 414, the license validation logic 204 determines whether the number of templates with a license state as “payment required” is greater than the number of allowed licenses. The number of allowed licenses may be for one to a number of different clients 106. For example, the clients 106 may purchase N number of licenses. Accordingly, the clients 106 may be able to substantively modify N number of templates. Upon determining that the number of templates with a license state as “payment required” is not greater than the number of allowed licenses, the operations of the flow diagram 400 are then complete. Upon determining that the number of templates with a license state as “payment required” is not greater than the number of allowed licenses, the flow continues at block 416.
  • At block 416, the license validation logic 204 writes an error message to a system log. The system log may be stored in the application server 102 or the utility server 104. An administrator of the system may have access to the system log. Accordingly, if the number of licenses is exceeded, the administrator is notified through the system log. The flow continues at block 418.
  • At block 418, the license validation logic 204 notifies the administrator that the number of licenses that have been exercised has exceeded the allowed limit, through a user interface. The license validation logic 204 may also notify the administrator through email, etc. In some embodiments, the license validation logic 204 may deny future requests for rendering of templates in accessible form until the number of licenses is increased. The operations of the flow diagram 400 are complete.
  • Delayed Validation of a Software Activation
  • Some embodiments include delayed validation of a software activation. In some embodiments, the delayed validation of the software activation is based on an activation time period. In some embodiments, copies of software products or a suite of software products may include a limited license based on a serial number. In other words, a copy of a software product may not be activated on an unlimited number of machines. A suite of software products may include one or more software products. While a copy of a software product or suite of software may be installed on any of a number of machines, in some embodiments, the copy of a software product or suite of software may only be activated on a limited number of machines. An activation may require communication with a server over a network prior to execution of the software. The activation may be based on a serial number and other data that uniquely identifies the machine (such as a machine disk identifier (MDI) that uniquely identifies a hard disk drive of the machine on which the software is activated). In some embodiments, an activation may be transferred to different machines. For example, if customers purchase a new machine, the customers may transfer the activation from an old machine to this new one.
  • Some embodiments incorporate an activation time period in the deactivation and activation of a copy of a software product. For example, the activation time period may be a period of time starting from the present and looking back a given period (e.g., three months, six months, 12 months, etc.). For a six-month activation time period, if an activation or deactivation occurs on July 1, the activation time period is from July 1 back to January 1 of the same year. In some embodiments, the limited activations are relative to the activation time period. For example, if two activations are allowed for a given software product, two activations are available in the activation time period. The given software product may have more activations beyond the activation time period. Such embodiments provide a trade-off between limiting the number of activations versus the processing of a large amount of customer service calls regarding the activation.
  • For example, assume that two activations are allowed for a given copy of a software product and that there is a six-month activation time period. After purchasing a copy of a software product, a user typically attempts to install the copy on a first machine and on a second machine, which is allowed. Shortly thereafter, if the user attempts to install the copy on a third machine, the activation is denied. If the user attempts to install the copy on a third machine eight months later, it is assumed that the user has upgraded their hardware because of the length of time. In other words, it is assumed the copy of the software product is actually only being executed on two machines because of this upgrade. Therefore, the third activation is allowed because the activation is outside the activation time period. Accordingly, activations beyond the limited number are allowed outside the activation time period in exchange for a reduction in the number of customer service calls. In other words, based on a cost-benefit analysis, the cost would be that the copy of the software product is activated outside the activation time period. The benefit is the reduction in the number of customer service calls from users attempting to activate on new hardware outside the activation time period. The number of activations for a software application may be tracked using an activation counter.
  • Thus, if a software application is activated, the activation counter is incremented, and if a software application is deactivated, the activation counter is decremented. Some embodiments delay the updating of an activation counter relative to the activation time period off-line relative to the activations and deactivations. For example, the activation counter may be updated for one to a number of software applications each night at midnight.
  • FIG. 5 illustrates a system for delayed validation of software activation based on an activation time period, according to some embodiments of the invention. In particular, FIG. 5 illustrates a system 500 that includes a machine 502 that is coupled to a server 504 through a network 506. The machine 502 may be representative of any apparatus, computer device, etc. For example, the machine 502 may be a desktop computer, notebook computer, Personal Digital Assistant (PDA), a cellular telephone, etc. The machine 502 includes a software product A 510 that has been installed thereon. The machine 502 also includes a client activation logic 512. The client activation logic 512 may be representative of software, hardware, firmware or a combination thereof. For example, the client activation logic 512 may be software to be executed on a processor (not shown). An example of the machine 502 having this architecture is described in FIG. 5 below.
  • A more detailed description of an architecture of the machine 502 and/or the server 504, according to some embodiments, is set forth below. While FIG. 5 employs a client-server architecture, embodiments are not limited to such an architecture. For example, some embodiments may be incorporated into a distributed or peer-to-peer architecture system. The network 506 may be different types of networks including a Local Area Network, Wide Area Network, etc. For example, the network 506 may be the Internet, an Intranet network, an Ethernet-based network, etc.
  • FIG. 5 also includes a number of operations that may be part of the activation of the software product A 510. The operations include an activation operation 526 and an activation result operation 528. The activation operation 526 is an operation to activate the software product A 510 on the machine 502. In some embodiments, the activation operation 526 may be based on a user of the machine 502 attempting to activate the software product A 510. In some embodiments, a copy of the software product A 510 may only be activated on a limited number of machines. Activation and deactivation of software products on machines are performed based on communications with the server 504. As further described below, logic within the server 504 limits the number of activations for a copy of a software product using a license number of the software and a unique identification of the machines. The logic within the server 504 accepts or denies activation of a copy of a software product based on the number of activations in a given activation time period. An activation time period is a period that is between the present time and a point in the past. In some embodiments, an activation counter is used to track the number of activations for a given software application/product. In some embodiments, logic in the server 504 may delay (relative to the activation operation) updates to the activation counter based on the activation time period.
  • The logic within the server 504 receives the activation operation 526 and determines whether to perform the activation of the software product A 510. The result of this determination is the activation result operation 528. In particular, the logic within the server 504 returns a result of the activation back to the machine 502. In some embodiments, the result may be an acceptance or denial of the attempt to perform the activation.
  • FIG. 6 illustrates a more detailed block diagram of a server that includes delayed validation of software activation based on an activation time period, according to some embodiments of the invention. In particular, FIG. 6 illustrates a more detailed block diagram of the server 504 of FIG. 5. As shown, the server 504 includes a counter update logic 602, an activation logic 603 and a machine-readable medium 604. The machine-readable medium 604 stores activation data structures 606. The activation data structures 606 may be tables, objects, data arrays, etc. The counter update logic 602 and the activation logic 603 may be representative of software, hardware, firmware or a combination thereof. For example, the counter update logic 602 and the activation logic 603 may be software to be executed on a processor (not shown). An example of the server 504 having this architecture is described in FIG. 9 below.
  • The activation logic 603 may track activations/deactivations based on a unique identification of the machine or a component therein. For example, in some embodiments, the unique identification may be a machine disk identifier. The machine disk identifier is a value that is calculated based on information related to the hard disk drive (e.g., identifications of sectors or tracks of the hard disk drive). The activation logic 603 may also track activations/deactivations based on an identification of a processor of the machine, the amount of memory, etc. In some embodiments, the activation logic 603 may also track activations/deactivations based on any combination of those identifications listed above. The activation logic 603 may store these unique identifications along with a unique serial number for the license of the software product into the activation data structures 606. The counter update logic 602 may perform delayed updates (relayed to activation of software) to activation counters stored in the deactivation data structures 606 for one or more licenses of such software.
  • FIG. 7 illustrates a more detailed block diagram of a machine that includes logic to perform software uninstallation that integrates transfer activation, which updates the activation counter, according to some embodiments of the invention. In particular, FIG. 7 illustrates a more detailed block diagram of the machine 502 of FIG. 5. In addition to the software product A 110 and the client activation logic 512, the machine 502 includes an uninstall logic 702, a license validation logic 704, license data 708 and anchor data 710. The uninstall logic 702 and the license validation logic 704 may be representative of software, hardware, firmware or a combination thereof. For example, the uninstall logic 702 and the license validation logic 704 may be software to be executed on a processor (not shown). An example of the machine 102 having this architecture is described in FIG. 12 below. The machine also includes license data 708 and anchor data 710, which may be files, data stored as part of a file, etc. The anchor data 710 may include data indicating the time when the software product was installed on the machine 102. The anchor data 710 may also include data related to activation (whether the software product is activated, when activated, etc.).
  • A more detailed description of the operations for software activation and delayed updates to the counter for software activation is now described. FIG. 8 illustrates a flow diagram for software activation, according to some embodiments of the invention. The flow diagram 800 illustrates the operations of the activation logic 603.
  • At block 802, the activation logic 603 receives a request to activate a software application. With reference to FIG. 5, the client activation logic 512 transmits the request. The flow continues at block 804.
  • At block 804, the activation logic 603 determines whether an activation counter for the software application equals to a maximum number of allowed activations. The activation logic 603 may retrieve an entry from the activation data structures 606 that is associated with the software application based on a serial number. The entry may include the activation counter and the maximum number of allowed activations for the software application. Upon determining that the activation counter for the software application equals a maximum number of allowed activations, the flow continues at block 806. Upon determining that the activation counter for the software application does not equal a maximum number of allowed activations, the flow continues at block 808, which is described in more detail below.
  • At block 806, the activation logic 603 transmits a communication back to the machine 502 that indicates that the activation was denied. Therefore, the activation logic 603 does not update the activation counter for this software. The flow continues at block 808.
  • At block 808, the activation logic 603 updates the activation counter for the software application. In particular, the activation logic 603 increments the activation counter to account for the new activation. The flow continues at block 810.
  • At block 810, the activation logic 603 transmits a communication back to the machine 502 that the activation was accepted. The operations of the flow diagram 800 are complete.
  • A more detailed description for delayed operations (relative to the software activation) for updating the activation counter for software activation is now described. In particular, the activation counter for software activation may be updated based on an activation time period, subsequent to the activation described in the flow diagram 800 of FIG. 8. FIG. 9 illustrates a flow diagram for delayed updates to the counter for software activation, according to some embodiments of the invention. The flow diagram 900 illustrates the operations of the counter update logic 602. In some embodiments, these operations may be performed periodically and during an off-peak time of day. For example, these operations may be performed once a night at 12:00 a.m. While described with reference to updating the activation counter for one software application, in some embodiments, the counter update logic 602 performs these operations for any of a number of software applications. For example, in some embodiments, the counter update logic 602 may update all of the activation counters (for the different software applications) stored in the activation data structures 606.
  • At block 902, the counter update logic 602 determines the activation time period for the software application. The activation time period may be stored in the entry in the activation data structures 606 associated with the software application. As described above, the activation time period may be a time period starting from the present and looking back a given period (e.g., three months, six months, 12 months, etc.). The flow continues at block 904.
  • At block 904, the counter update logic 602 determines the number of activations in the activation time period. The counter update logic 602 may determine this number based on the data stored in the activation data structures 606. The activation logic 603 may store the date of activation for each machine for a given serial number of a software application. The flow continues at block 906.
  • At block 906, the counter update logic 602 determines whether there are any activations outside the activation time period. In particular, if any activations are outside the activation time period, the counter update logic 602 needs to update the activation counter for this software application. Upon determining that there are no activations outside the activation time period, the flow continues at block 910, which is described in more detail below. Upon determining that there are activations outside the activation time period, the flow continues at block 908.
  • At block 908, the counter update logic 602 updates the activation counter based on the activation time period. In particular, the activation counter may include activations outside the activation time period. In some embodiments, the activation logic 603 updates the activation counter independent of the activation time period (as shown in FIG. 8). Accordingly, the time to complete the activation is less (in comparison to if the activation logic 603 included the activation time period in the determination of activation shown in FIG. 8). Therefore, the counter update logic 602 updates the number of activation based on the number of activations in the activation time period. For example, if five activations were performed in the activation time period and if four activations were outside the activation time period, the activation logic 603 would have set the activation counter to nine (based on the operations in FIG. 8). Therefore, the counter update logic 602 sets the activation counter to five (based on the activation in the activation time period). The flow continues at block 910.
  • At block 910, the counter update logic 602 determines whether there are multiple activations for a same machine in the activation time period. The counter update logic 602 may make this determination based on the data stored in the table in the activation data structures 606 for this software application. The table may store the identification of the machines on which the activation is performed. Upon determining that there are no multiple activations for a same machine in the activation time period, the operations of the flow diagram 900 are complete. Upon determining that there are multiple activations for a same machine in the activation time period, the flow continues at block 912.
  • At block 912, the counter update logic 602 updates the activation counter based on the multiple activations for a same machine in the activation time period. For example, if the same machine was updated 20 times in the activation time period, the counter update logic 602 marks this as only a single activation. Thus, in some embodiments, for each unique machine activated in the activation time period, the counter update logic 602 increments the activation counter by one. The operations of the flow diagram 900 are complete.
  • A more detailed description of deactivation of a software product based on a software suite activation, which updates the activation counter, according to some embodiments, is now described. A delayed update of the activation counter may then be performed based on the operations shown in the flow diagram 900 of FIG. 9. In particular, FIG. 10 illustrates a flow diagram for software suite activation, according to some embodiments of the invention. The flow diagram 1000 illustrates the operations for activating a software suite having a number of individual software products on a machine. Moreover, such operations are described wherein a copy of one of the individual software products is already activated on the machine. Such operations may be performed for a greater number of activated individual software products. The flow diagram 1000 is described with reference to the components of FIGS. 5-7. The flow diagram 1000 commences at block 1002.
  • At block 1002, the client activation logic 512 of a machine may receive a copy of a software suite (that includes a number of software products) for installation on the machine. The machine 502 may include an input/output logic for receiving the copy of the software suite for installation. Examples of different I/O logic are shown in FIG. 12 that is described below. The flow continues at block 1004.
  • At block 1004, the client activation logic 512 determines whether a copy of one of the number of software products is already activated on the machine. In some embodiments, the client activation logic 512 may make this determination based on the existence of a file stored on the hard disk drive of the machine 502, the setting of a flag in a file that is part of the installation of the software product, etc. In some embodiments, the client activation logic 512 may make this determination based on a query to the activation logic 603 on the server 504 over the network 506. Upon determining that a copy of one of the number of software products is not already activated on the machine 502, the flow continues at block 1012, which is described in more detail below.
  • At block 1006, upon determining that a copy of one of the number of software products is already activated on the machine 502, the client activation logic 512 deactivates the copy of the software product on the machine 502. The client activation logic 512 communicates a deactivation message to the activation logic 603 of the server 504. The activation logic 603 of the server 504 may deactivate the license of the copy of the software product A 510 for the machine 502. For example, the activation logic 603 may update a data structure for the software product in the activation data structures 606. In some embodiments, based on the deactivation, the activation logic 603 decrements the activation counter within the data structure for this software product. Accordingly, even if the license of copy of the software product A 510 has a limited number of activations, the copy may be activated on a different machine. Therefore, the individual copy of the software product is not adopted by the software suite prior to deactivation, thereby allowing for reuse of the license of the software product A 510. The flow continues at block 1007.
  • At block 1007, the client activation logic 512 notifies a user that is performing the installation of the software suite that the license of the software product A 510 is now deactivated on the machine 502. The client activation logic 512 may also notify the user that the license is now available for use on a different machine. This notification may be through a pop-message during the activation, an email message, a telephone call, etc. The flow continues at block 1008.
  • At block 1008, the client activation logic 512 changes a serial number of the copy of the software product A 510 to match a serial number of the copy of the software suite. The serial numbers may be stored in one or more locations in files in storage on the machine 502. Accordingly, the client activation logic 512 updates the serial number in those locations. The flow continues at block 1010.
  • At block 1010, the client activation logic 512 redirects a license of the copy of the software product A 510 to a license of the copy of the software suite. The client activation logic 512 may perform this redirection based on creation of a file, setting a flag in a file, etc. Therefore, if a change is to occur to a license of the software suite, the same change will be made to the license of the copy of the software A product 510 and vice versa. Logic that is to make changes to the license may be updated accordingly. For example, if the license of the software suite is to be transferred to a different machine, to be deactivated, etc., the logic to perform this operation may check for the existence of a certain file. Upon determining that this file exists, the logic may perform the same operation to the license of the software A product 510. The flow continues at block 1012.
  • At block 1012, the client activation logic 512 activates the copy of the software suite. The client activation logic 512 may activate the copy of the software suite by sending an activation message to the activation logic 603 on the server 504. The activation logic 603 on the server 504 may determine whether the copy of the software suite may be activated. For example, individual data structures may be stored in the activation data structures 606 for the software suite. These individual data structures may include activation counters for the different copies of the software suites that are tracked based on serial numbers (similar to the activation counters for the individual software products). Therefore, if the copy of the software suite has already been activated for a set limit, the activation logic 603 may deny activation and transmit a deny message back to the machine 502. If the copy of the software suite is below the set limit, the activation logic 603 updates its number of activations for this copy of the software suite and sends an activation message back to the machine 502. Therefore, in some embodiments, delayed updates may be performed for the activation counters for the software suites.
  • Embodiments are not limited to the operations shown in the flow diagram 1000. For example, in some embodiments, the activation of the software suite may cause the adoption of the individual copy of the software product but not cause the deactivation of the individual copy of the software product. Alternatively, in some embodiments, the activation of the software suite may cause the deactivation of the individual copy of the software product, but not cause the adoption of the individual copy of the software product.
  • A more detailed description of software uninstallation that integrates transfer activation, which updates the activation counter, according to some embodiments, is now described. A delayed update of the activation counter may then be performed based on the operations shown in the flow diagram 900 of FIG. 9. FIG. 11 illustrates a flow diagram for software uninstallation that integrates transfer activation, according to some embodiments of the invention. The flow diagram 1100 is described with reference to the components of FIGS. 5-7. The flow diagram 1100 commences at block 1102.
  • At block 1102, the uninstall logic 702 receives a command to uninstall a software product that is installed on the machine 102. For example, the command may be generated from an uninstall application that is executed by a user of the machine 502 to uninstall the software product A 510. The flow continues at block 1104.
  • At block 1104, the license validation logic 704 determines whether the license of the software product A 510 is valid. Once the command to uninstall is received, the uninstall logic 702 may call the license validation logic 704 to perform this determination. The license validation logic 704 may make this determination by validating the license data 708. For example, the license validation logic 704 may check whether a valid value is stored for the license in the license data 708. Upon determining that the license of the software product A 510 is not valid, the flow continues at block 1118, which is described in more detail below. Upon determining that the license of the software product A 510 is valid, the flow continues at block 1106.
  • At block 1106, the license validation logic 704 determines whether the software product A 510 is activated. In some embodiments, the license validation logic 704 determines whether the anchor data 710 includes an indication that the software product A 510 has been activated. In some embodiments, the software product A 510 may be executed on the machine 502 for a trial period without requiring the software to be activated. This may be any predetermined time period (e.g., 30 days) from the time of installation. The data representative of this predetermined time period may be stored in the anchor data 710. Therefore, if the software product A 510 is not activated, the license validation logic 704 may check the anchor data 710 if the software product A 510 has been installed within the predetermined time period. In some embodiments, if the software product A 510 is activated or the software product A 510 has been installed within the predetermined time period, the license of the software product A 510 is considered activated. Upon determining that the software product A 510 is not activated, the flow continues at block 1112, which is described in more detail below. Upon determining that the software product A 510 is activated, the flow continues at block 1108.
  • At block 1108, the uninstall logic 702 determines whether the user (that initiated the uninstall) has selected an option to perform a transfer activation of the software product A prior to the uninstall. The uninstall logic 702 may cause a Graphical User Interface (GUI) window to be opened on a monitor of the device 102 that allows the user to make the selection. Upon determining that the user did not select the option to perform the transfer activation, the flow continues at block 1114, which is described in more detail below. Upon determining that the user did select the option to perform the transfer activation, the flow continues at block 1110.
  • At block 1110, the client activation logic 512 performs the transfer activation of the software product A 510. The client activation logic 512 may transmit a communication to the activation logic 603 on the server 504. The communication may include the serial number associated with the software product A 510 and the identification of the machine 502. The communication includes an indication that the software product A 510 is to be deactivated for the machine 502. As described above, the activation logic 603 may update the deactivation data structures 306 to reflect this deactivation. In some embodiments, based on the transfer activation, the activation logic 603 decrements the activation counter within the data structure for this software product. The activation logic 603 may transmit a communication back to the client activation logic 512 that is indicative of whether the transfer activation was successful. The flow continues at block 1112.
  • At block 1112, the client activation logic 512 determines whether the transfer activation of the software product A 510 was successful. The client activation logic 512 may make this determination based on if a successful communication is received back from the activation logic 603 of the server 504. The transfer activation may not be successful if the network 506 or the server 504 is not operational, if the data that the activation logic 603 is to update is not accessible, corrupted, etc., if the data transmitted over the network is corrupted, etc. Upon determining that the transfer activation was successful, the flow continues at block 1118, which is described in more detail below. Upon determining that the transfer activation was not successful, the flow continues at block 1114.
  • At block 1114, the uninstall logic 702 determines whether the user selected an advanced uninstall of the software product A 510. The uninstall logic 702 may cause a GUI window to be opened on a monitor of the device 502 that allows the user to make the selection. Upon determining that the user did select the advanced uninstall, the flow continues at block 1118, which is described in more detail below. Upon determining that the user did not select the advanced uninstall, the flow continues at block 1116.
  • At block 1116, the uninstall logic 702 performs the standard uninstall of the software product A 510. As part of the standard uninstall, the uninstall logic 702 may remove application files, update registry data, etc. However, the uninstall logic 702 does not remove the data related to the activation of the copy of the software product A 510 and the anchor data 710. Accordingly, the standard uninstall operation preserves the activation data on the machine, which allows users to reinstall the copy of the software product A 510 without reactivating of the software. A standard uninstall operation may be executed for users who plan on re-installing the software product on the same machine. The flow diagram 1100 is then complete.
  • At block 1118, the uninstall logic 702 performs the advanced uninstall of the software product A 510. As part of the advanced uninstall, the uninstall logic 702 may remove application files, update registry data, etc. In addition, the uninstall logic 702 may remove the activation data. In some embodiments, the uninstall logic 702 may remove all data and files associated with the software product A, except for the data (stored in the anchor data 710) that indicates that the software has been installed and time of installation. Such data may remain to preclude users from cyclically installing and uninstalling the software to stay within the trial period and continuing using the product beyond its intended use as a trial. Accordingly, the users are required to activate the software. The user may select the advanced uninstall operation if the trial period has expired and the user has not activated the software. The user may also select the advanced uninstall operation if the user has already transferred the activation. The user may select the advanced uninstall operation if the license of the software is corrupt and requires reactivation. The flow diagram 1100 is then complete.
  • Embodiments are not limited to the operations shown in the flow diagram 1100. For example, in some embodiments, if the software product is part of a software suite, a transfer activation may not be performed. Rather, a standard uninstall of the software product is performed without a transfer activation.
  • Architecture for Delayed Validation of a Software License and Activation
  • An embodiment wherein software performs operations related to delayed validation for software licensing and activation as described herein is now described. In particular, FIG. 12 illustrates a computer device that executes software for performing operations related to delayed validation for software licensing and activation, according to some embodiments of the invention. FIG. 12 illustrates a computer device 1200 that may be representative of the application server 102, the utility server 104, the clients 106A-106N, the machine 502 or the server 504.
  • As illustrated in FIG. 12, the computer system 1200 comprises processor(s) 1202. The computer system 1200 also includes a memory unit 1230, processor bus 1222, and Input/Output controller hub (ICH) 1224. The processor(s) 1202, the memory unit 1230, and the ICH 1224 are coupled to the processor bus 1222. The processor(s) 1202 may comprise any suitable processor architecture. The computer system 1200 may comprise one, two, three, or more processors, any of which may execute a set of instructions in accordance with embodiments of the invention.
  • The memory unit 1230 may store data and/or instructions, and may comprise any suitable memory, such as a random access memory (DRAM). For example, the memory 1230 may be a Synchronous RAM (SRAM), a Synchronous Dynamic RAM (SDRAM), DRAM, a double data rate (DDR) Synchronous Dynamic RAM (SDRAM), etc. The computer system 1200 also includes IDE drive(s) 1208 and/or other suitable storage devices. A graphics controller 1204 controls the display of information on a display device 1206, according to some embodiments of the invention.
  • The input/output controller hub (ICH) 1224 provides an interface to I/O devices or peripheral components for the computer system 1200. The ICH 1224 may comprise any suitable interface controller to provide for any suitable communication link to the processor(s) 1202, memory unit 1230 and/or to any suitable device or component in communication with the ICH 1224. In some embodiments, the ICH 1224 provides suitable arbitration and buffering for each interface.
  • For some embodiments of the invention, the ICH 1224 provides an interface to one or more suitable integrated drive electronics (IDE) drives 1208, such as a hard disk drive (HDD) or compact disc read only memory (CD ROM) drive, or to suitable universal serial bus (USB) devices through one or more USB ports 1210. For one embodiment, the ICH 1224 also provides an interface to a keyboard 1212, mouse 1214, CD-ROM drive 1218, or other suitable devices through one or more firewire ports 1216. In some embodiments, the ICH 1224 also provides a network interface 1220 though which the computer system 1200 can communicate with other computers and/or devices. The ICH 1224 is connected to a wireless interface, which enables the computer system 1200 to wirelessly connect to computing devices using any suitable wireless communication protocol (e.g., 802.11b, 802.11g, etc.).
  • In some embodiments, the computer system 1200 includes a machine-readable medium that stores a set of instructions (e.g., software) embodying any one, or all, of the methodologies described herein. Furthermore, software may reside, completely or at least partially, within memory unit 1230 and/or within the processor(s) 1202.
  • With reference to FIGS. 2, 5-7, the memory 1230 and/or one of the IDE/ATA drives 1208 may store the rendering logic 202, the license validation logic 204, the software product A 510, the client activation logic 512, the counter update logic 602, the activation logic 603, the uninstall logic 702, the license validation logic 704, the license data 708 and the anchor data 710. In some embodiments, the rendering logic 202, the license validation logic 204, the software product A 510, the client activation logic 512, the counter update logic 602, the activation logic 603, the uninstall logic 702 and the license validation logic 704 may be instructions executing within the processor(s) 1202. The rendering logic 202, the license validation logic 204, the client activation logic 512, the counter update logic 602, the activation logic 603, the uninstall logic 702 and the license validation logic 704 may be stored in a machine-readable medium that are a set of instructions (e.g., software) embodying any one, or all, of the methodologies described herein. For example, the rendering logic 202, the license validation logic 204, the client activation logic 512, the counter update logic 602, the activation logic 603, the uninstall logic 702 and the license validation logic 704 may reside, completely or at least partially, within the memory 1230, the processor(s) 1202, one of the IDE/ATA drive(s) 1208, etc.
  • In the description, numerous specific details such as logic implementations, opcodes, means to specify operands, resource partitioning/sharing/duplication implementations, types and interrelationships of system components, and logic partitioning/integration choices are set forth in order to provide a more thorough understanding of the present invention. It will be appreciated, however, by one skilled in the art that embodiments of the invention may be practiced without such specific details. In other instances, control structures, gate level circuits and full software instruction sequences have not been shown in detail in order not to obscure the embodiments of the invention. Those of ordinary skill in the art, with the included descriptions will be able to implement appropriate functionality without undue experimentation.
  • References in the specification to “one embodiment”, “an embodiment”, “an example embodiment”, etc., indicate that the embodiment described may include a particular feature, structure, or characteristic, but every embodiment may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other embodiments whether or not explicitly described.
  • Embodiments of the invention include features, methods or processes that may be embodied within machine-executable instructions provided by a machine-readable medium. A machine-readable medium includes any mechanism which provides (i.e., stores and/or transmits) information in a form accessible by a machine (e.g., a computer, a network device, a personal digital assistant, manufacturing tool, any device with a set of one or more processors, etc.). In an exemplary embodiment, a machine-readable medium includes volatile and/or non-volatile media (e.g., read only memory (ROM), random access memory (RAM), magnetic disk storage media, optical storage media, flash memory devices, etc.), as well as electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.).
  • Such instructions are utilized to cause a general or special purpose processor, programmed with the instructions, to perform methods or processes of the embodiments of the invention. Alternatively, the features or operations of embodiments of the invention are performed by specific hardware components which contain hard-wired logic for performing the operations, or by any combination of programmed data processing components and specific hardware components. Embodiments of the invention include software, data processing hardware, data processing system-implemented methods, and various processing operations, further described herein.
  • A number of figures show block diagrams of systems and apparatus for delayed validation for software licensing and activation, in accordance with some embodiments of the invention. A number of figures show flow diagrams that illustrate the operations for delayed validation for software licensing and activation, in accordance with some embodiments of the invention. The operations of the flow diagram are described with references to the systems/apparatus shown in the block diagrams. However, it should be understood that the operations of the flow diagram could be performed by embodiments of systems and apparatus other than those discussed with reference to the block diagrams, and embodiments discussed with reference to the systems/apparatus could perform operations different than those discussed with reference to the flow diagram.
  • In view of the wide variety of permutations to the embodiments described herein, this detailed description is intended to be illustrative only, and should not be taken as limiting the scope of the invention. What is claimed as the invention, therefore, is all such modifications as may come within the scope and spirit of the following claims and equivalents thereto. Therefore, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.

Claims (32)

What is claimed is:
1-11. (canceled)
12. A method comprising:
performing the following operations, in a server, subsequent to a current activation of a software application:
determining a total number of activations of the software application;
determining an activation time period for activation of the software application, the activation time period being a period of time from a time of the current activation or a deactivation back for a predetermined period;
determining a number of activations and deactivations in the activation time period;
allowing activations, greater than an allowed number of activations, outside of the activation time period; and
updating an activation counter for the software application if the total number of activations is not equal to the number of activations in the activation time period or if more than one activation of the number of activations in the activation time period is for activation on a same client device.
13. The method of claim 12, wherein the total number of activations of the software application are from on an activation request from one or more client devices.
14. The method of claim 12, further comprising performing the following operations upon receiving an activation request for the software application from a client device:
determining the total number of activation of the software application;
determining a maximum number of allowed activations for the software application;
performing the following operations if the total number of activations of the software application is less than or equal to a maximum number of allowed activations for the software application:
incrementing the activation counter for the software application; and
transmitting a communication to allow activation back to the client device.
15. The method of claim 14, wherein performing the following operations upon receiving an activation request for the software application from a client device further comprises transmitting a communication to deny activation back to the client device if the total number of activations of the software application is greater than a maximum number of allowed activations for the software application
16. The method of claim 12, wherein performing the following operations, in the server comprises performing the following operations at an off-peak time of day for the server.
17. A method comprising:
receiving, from a first machine, a request to activate software on the first machine;
activating the software on the first machine in response to a determination that a number of activations for the software is less than a maximum number of allowed activations for the software, the activating of the software including incrementing an activation counter;
allowing activations, greater than an allowed number of activations, outside of the activation time period; and
updating the activation counter, at a later time relative to the activating of the software, based on a number of activations in an activation time period for the software, the activation time period being a period of time from a time of the activating or a deactivating of the software back for a predetermined period.
18. The method of claim 17, further comprising:
receiving a request to remove activation of the software from a second machine as part of an uninstall operation of the software from the second machine; and
deactivating the software on the second machine, wherein the deactivating of the software includes decrementing the activation counter.
19. The method of claim 18, wherein the updating of the activation counter based on the number of activations in the activation time period for the software is a later time relative to deactivating the software on the second machine.
20. The method of claim 17, further comprising:
receiving a request from a second machine to deactivate a first copy of the software that is activated on second machine based on installation of a software suite that includes a second copy of the software on the second machine; and
deactivating the first copy of the software on the second machine, wherein the deactivating of the first copy of the software includes decrementing the activation counter.
21. The method of claim 20, wherein the updating of the activation counter based on the number of activations in the activation time period for the software is a later time relative to deactivating the first copy of the software on the second machine.
22-25. (canceled)
26. An apparatus comprising:
a non-transitory machine-readable medium to store an activation data structure, an entry in the activation data structure being associated with a serial number of a software product and including an activation counter;
an activation logic executed by a processor of the apparatus to receive a request to activate a software product on a device, the activation logic allowing activation of the software product based on a total number of activations of the software product not being greater than a number of allowed activations of the software product, the activation logic to increment the activation counter as part of the activation of the software product, the activation logic allowing activations greater than the allowed activations outside of the activation time period; and
a counter update logic executed by the processor of the apparatus to recalculate the activation counter, subsequent to the activation of the software product based on an activation time period, the activation time period being a period of time from a time of the activation or a deactivation of the software product back for a predetermined period.
27. The apparatus of claim 26, wherein the counter update logic is to update the activation counter subsequent to the activation of the software product, if the total number of activations is not equal to the number of activations in the activation time period.
28. The apparatus of claim 26, wherein the counter update logic is to update the activation counter subsequent to the activation of the software product, if more than one activation of the number of activations in the activation time period is for activation on a same client device.
29. The apparatus of claim 26, wherein the counter update logic is to recalculate the activation counter at an off-peak time of day.
30-39. (canceled)
40. A non-transitory machine-readable storage medium that provides instructions which, when executed by at least one processor of a machine, cause said machine to perform operations comprising:
performing the following operations, in a server, subsequent to a current activation of a software application:
determine a total number of activations of the software application;
determine an activation time period for activation of the software application, the activation time period being a period of time from a time of the current activation or a deactivation back for a predetermined period;
determine a number of activations and deactivations in the activation time period;
allow activations, greater than an allowed number of activations, outside of the activation time period; and
updating an activation counter for the software application if the total number of activations is not equal to the number of activations in the activation time period or if more than one activation of the number of activations in the activation time period is for activation on a same client device.
41. The machine-readable storage medium of claim 40, wherein the total number of activations of the software application are from on an activation request from one or more client devices.
42. The machine-readable storage medium of claim 40, wherein the total number of activations of the software application include an activation by a customer service representative.
43. The machine-readable storage medium of claim 40, further comprising performing the following operations upon receiving an activation request for the software application from a client device:
determining the total number of activation of the software application;
determining a maximum number of allowed activations for the software application;
performing the following operations if the total number of activations of the software application is less than or equal to a maximum number of allowed activations for the software application:
incrementing the activation counter for the software application; and
transmitting a communication to allow activation back to the client device.
44. The machine-readable storage medium of claim 43, wherein performing the following operations upon receiving an activation request for the software application from a client device further comprises transmitting a communication to deny activation back to the client device if the total number of activations of the software application is greater than a maximum number of allowed activations for the software application.
45. A non-transitory machine-readable storage medium that provides instructions which, when executed by at least one processor of a machine, cause said machine to perform operations comprising:
receiving, from a first machine, a request to activate software on the first machine;
activating the software on the first machine in response to a determination that a number of activations for the software is less than a maximum number of allowed activations for the software, the activating of the software including incrementing an activation counter;
allowing activations, greater than an allowed number of activations, outside of the activation time period; and
updating the activation counter, at a later time relative to the activating of the software, based on a number of activations in an activation time period for the software, the activation time period being a period of time from a time of the activating or a deactivating of the software back for a predetermined period.
46. The machine-readable storage medium of claim 45, further comprising:
receiving a request to remove activation of the software from a second machine as part of an uninstall operation of the software from the second machine; and
deactivating the software on the second machine, wherein the deactivating of the software includes decrementing the activation counter.
47. The machine-readable storage medium of claim 46, wherein the updating of the activation counter based on the number of activations in the activation time period for the software is a later time relative to deactivating the software on the second machine.
48. The machine-readable storage medium of claim 45, further comprising:
receiving a request from a second machine to deactivate a first copy of the software that is activated on second machine based on installation of a software suite that includes a second copy of the software on the second machine; and
deactivating the first copy of the software on the second machine, wherein the deactivating of the first copy of the software includes decrementing the activation counter.
49. The machine-readable storage medium of claim 48, wherein the updating of the activation counter based on the number of activations in the activation time period for the software is a later time relative to deactivating the first copy of the software on the second machine.
50. The method of claim 12, further comprising determining whether any activations occur outside of the activation time period, a number of activations occurring outside of the activation time period to be removed from the total number of activations.
51. The method of claim 12, wherein the updating the activation counter comprises:
determining whether more than one activation of the number of activations in the activation time period is for activation on a same client device; and
based on the determining, marking the more than one activation as a single activation.
52. The method of claim 12, wherein the determinable time is a present time.
53. The method of claim 12, wherein any number of activations are allowed outside of the activation time period.
54. The method of claim 12, wherein the activation is a last activation and the performing occurs offline in the server, subsequent to and delayed from the last activation.
US11/191,346 2005-07-28 2005-07-28 Delayed validation for software licensing and activation Abandoned US20140013449A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/191,346 US20140013449A1 (en) 2005-07-28 2005-07-28 Delayed validation for software licensing and activation
US14/922,680 US9483625B2 (en) 2005-07-28 2015-10-26 Delayed validation for software licensing and activation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/191,346 US20140013449A1 (en) 2005-07-28 2005-07-28 Delayed validation for software licensing and activation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/922,680 Continuation US9483625B2 (en) 2005-07-28 2015-10-26 Delayed validation for software licensing and activation

Publications (1)

Publication Number Publication Date
US20140013449A1 true US20140013449A1 (en) 2014-01-09

Family

ID=49879589

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/191,346 Abandoned US20140013449A1 (en) 2005-07-28 2005-07-28 Delayed validation for software licensing and activation
US14/922,680 Active US9483625B2 (en) 2005-07-28 2015-10-26 Delayed validation for software licensing and activation

Family Applications After (1)

Application Number Title Priority Date Filing Date
US14/922,680 Active US9483625B2 (en) 2005-07-28 2015-10-26 Delayed validation for software licensing and activation

Country Status (1)

Country Link
US (2) US20140013449A1 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140033313A1 (en) * 2005-03-31 2014-01-30 Adobe Systems Incorporated Software suite activation
US20140283044A1 (en) * 2013-01-31 2014-09-18 Tencent Technology (Shenzhen) Company Limited Method and Device For Preventing Application in an Operating System From Being Uninstalled
US20160019050A1 (en) * 2009-09-04 2016-01-21 Amazon Technologies, Inc. Secured firmware updates
US20160307173A1 (en) * 2015-04-20 2016-10-20 Splunk Inc. Display of data ingestion information based on counting generated events
US20180060064A1 (en) * 2016-08-30 2018-03-01 Kyocera Document Solutions Inc. Electronic machine, version check system and recording medium
US10013536B2 (en) * 2007-11-06 2018-07-03 The Mathworks, Inc. License activation and management
US10346879B2 (en) * 2008-11-18 2019-07-09 Sizmek Technologies, Inc. Method and system for identifying web documents for advertisements
CN110784606A (en) * 2018-07-26 2020-02-11 东芝泰格有限公司 Image processing apparatus, image processing system, and application start control method
US10817544B2 (en) 2015-04-20 2020-10-27 Splunk Inc. Scaling available storage based on counting generated events
US11256784B2 (en) * 2016-12-19 2022-02-22 Fujitsu Limited Recording medium recording management program, method, and recording medium recording support request program

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9460273B2 (en) * 2014-10-29 2016-10-04 International Business Machines Corporation Automatic generation of license terms for service application marketplaces
US10713338B2 (en) * 2017-03-09 2020-07-14 Microsoft Technology Licensing, Llc Source-based authentication for a license of a license data structure
US10146518B1 (en) * 2017-05-25 2018-12-04 Dell Products L.P. Smart retention policy appliance for legal compliance
US10838715B1 (en) 2019-05-03 2020-11-17 Servicenow, Inc. Efficient automatic population of downgrade rights of licensed software

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900246B1 (en) * 2005-05-31 2011-03-01 Adobe Systems Incorporated Software deactivation based on a deactivation time period

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199082B1 (en) 1995-07-17 2001-03-06 Microsoft Corporation Method for delivering separate design and content in a multimedia publishing system
US5826011A (en) 1995-12-26 1998-10-20 Rainbow Technologies, Inc. Method of metering and protecting computer software
US6021492A (en) 1996-10-09 2000-02-01 Hewlett-Packard Company Software metering management of remote computing devices
US5809251A (en) 1996-10-09 1998-09-15 Hewlett-Packard Company Remote installation of software by a management information system into a remote computer
US7047411B1 (en) 1999-12-17 2006-05-16 Microsoft Corporation Server for an electronic distribution system and method of operating same
US6785713B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US20020128976A1 (en) 2001-01-11 2002-09-12 Segue Software, Inc. Method and system for tracking software licenses and usage
US6993664B2 (en) 2001-03-27 2006-01-31 Microsoft Corporation Method and system for licensing a software product
US8275716B2 (en) 2001-05-31 2012-09-25 Contentguard Holdings, Inc. Method and system for subscription digital rights management
US7979914B2 (en) 2001-06-25 2011-07-12 Audible, Inc. Time-based digital content authorization
JP2005521150A (en) * 2002-03-18 2005-07-14 メルク・アンド・カンパニー・インコーポレーテッド Computer-aided and / or executive processes and systems for managing and / or providing medical information portals for healthcare providers
US6915278B1 (en) 2002-03-22 2005-07-05 Borland Software Corporation License management method and system
US7072672B1 (en) 2002-11-01 2006-07-04 Nokia Corporation Disposable mini-applications
US7302590B2 (en) 2003-01-06 2007-11-27 Microsoft Corporation Systems and methods for providing time-and weight-based flexibly tolerant hardware ID
US20040143746A1 (en) 2003-01-16 2004-07-22 Jean-Alfred Ligeti Software license compliance system and method
US7644442B2 (en) 2003-01-31 2010-01-05 Microsoft Corporation Systems and methods for using machine attributes to deter software piracy in an enterprise environment
US7343364B2 (en) * 2005-02-04 2008-03-11 Efunds Corporation Rules-based system architecture and systems using the same
US7505940B2 (en) 2005-03-31 2009-03-17 Adobe Systems Incorporated Software suite activation
US9256719B2 (en) * 2011-05-18 2016-02-09 Nextgenid, Inc. Multi-biometric enrollment kiosk including biometric enrollment and verification, face recognition and fingerprint matching systems
US9256720B2 (en) * 2011-05-18 2016-02-09 Nextgenid, Inc. Enrollment kiosk including biometric enrollment and verification, face recognition and fingerprint matching systems
US8819427B2 (en) * 2012-06-15 2014-08-26 Iolo Technologies, Llc Device specific secure licensing
US9858777B2 (en) * 2013-03-08 2018-01-02 Sensormedia Inc. System, method and computer readable medium for managing mobile devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900246B1 (en) * 2005-05-31 2011-03-01 Adobe Systems Incorporated Software deactivation based on a deactivation time period

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9563882B2 (en) * 2005-03-31 2017-02-07 Adobe Systems Incorporated Software suite activation
US20140033313A1 (en) * 2005-03-31 2014-01-30 Adobe Systems Incorporated Software suite activation
US10013536B2 (en) * 2007-11-06 2018-07-03 The Mathworks, Inc. License activation and management
US10346879B2 (en) * 2008-11-18 2019-07-09 Sizmek Technologies, Inc. Method and system for identifying web documents for advertisements
US9934022B2 (en) * 2009-09-04 2018-04-03 Amazon Technologies, Inc. Secured firmware updates
US20160019050A1 (en) * 2009-09-04 2016-01-21 Amazon Technologies, Inc. Secured firmware updates
US9747449B2 (en) * 2013-01-31 2017-08-29 Tencent Technology (Shenzhen) Company Limited Method and device for preventing application in an operating system from being uninstalled
US20170316209A1 (en) * 2013-01-31 2017-11-02 Tencent Technology (Shenzhen) Company Limited (2p) Method and device for preventing application in an operating system from being uninstalled
US10176327B2 (en) * 2013-01-31 2019-01-08 Tencent Technology (Shenzhen) Company Limited Method and device for preventing application in an operating system from being uninstalled
US20140283044A1 (en) * 2013-01-31 2014-09-18 Tencent Technology (Shenzhen) Company Limited Method and Device For Preventing Application in an Operating System From Being Uninstalled
US10817544B2 (en) 2015-04-20 2020-10-27 Splunk Inc. Scaling available storage based on counting generated events
US20160307173A1 (en) * 2015-04-20 2016-10-20 Splunk Inc. Display of data ingestion information based on counting generated events
US10282455B2 (en) * 2015-04-20 2019-05-07 Splunk Inc. Display of data ingestion information based on counting generated events
US11288283B2 (en) 2015-04-20 2022-03-29 Splunk Inc. Identifying metrics related to data ingestion associated with a defined time period
US20180060064A1 (en) * 2016-08-30 2018-03-01 Kyocera Document Solutions Inc. Electronic machine, version check system and recording medium
US10564957B2 (en) * 2016-08-30 2020-02-18 Kyocera Document Solutions Inc. Electronic machine, version check system and recording medium
US11256784B2 (en) * 2016-12-19 2022-02-22 Fujitsu Limited Recording medium recording management program, method, and recording medium recording support request program
CN110784606A (en) * 2018-07-26 2020-02-11 东芝泰格有限公司 Image processing apparatus, image processing system, and application start control method

Also Published As

Publication number Publication date
US9483625B2 (en) 2016-11-01
US20160042159A1 (en) 2016-02-11

Similar Documents

Publication Publication Date Title
US9483625B2 (en) Delayed validation for software licensing and activation
US7890950B1 (en) Software uninstallation that integrates transfer activation
US11237817B2 (en) Operating system update management for enrolled devices
US10404708B2 (en) System for secure file access
US8286158B2 (en) Method and system for installing portable executable applications
US9563882B2 (en) Software suite activation
JP4411076B2 (en) Localized read-only storage for distributing files across a network
US20120254602A1 (en) Methods, Systems, and Apparatuses for Managing a Hard Drive Security System
EP2909774B1 (en) Storing and accessing licensing information in operating system-independent storage
US8671455B1 (en) Systems and methods for detecting unintentional information disclosure
US20110099547A1 (en) Approaches for installing software using bios
US11409518B2 (en) Remote access controller device update system
US8250630B2 (en) Detecting unauthorized computer access
WO2013036472A1 (en) Selective file access for applications
CN101952809A (en) Computer storage device having separate read-only space and read-write space, removable media component, system management interface, and network interface
US20080022367A1 (en) Multi-User BIOS Authentication
US8479307B1 (en) Software deactivation based on a deactivation time period
CN111447178A (en) Access control method, system and computing device
CN114510706A (en) Permission control method and device based on physical interface and computing equipment
JP2004046756A (en) License management method, system and program
JPH0283622A (en) System for installing chargeable software on plural computers by single medium
US20050182965A1 (en) Proxy permissions controlling access to computer resources
JP4993818B2 (en) Job execution control system
CN114153801A (en) File opening method, computing device and storage medium
KR20010069920A (en) Method for providing user's authentication for softwares with internet

Legal Events

Date Code Title Description
AS Assignment

Owner name: ADOBE SYSTEMS INCORPORATED, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:VIJAY, SHYAM SUNDER;WOOLSEY, LES G.;REEL/FRAME:016825/0130

Effective date: 20050727

STCB Information on status: application discontinuation

Free format text: ABANDONED -- AFTER EXAMINER'S ANSWER OR BOARD OF APPEALS DECISION