具体实施方式
软件产品可以被授权持续特定的时间段。例如,软件厂商可以提供用来在试用的基础上使用软件产品诸如持续三十天或者直到特定的一天为止的用户授权。试用在时间上可能是有限的,诸如因为其是免费的或者比软件产品的正规价格更便宜。
将软件产品的使用限制到特定的时间段可以涉及使用户键入授权码。然而,在一些情况下,用户可以共享授权码或者可以改变授权码以延长授权的使用的量。在一些情况下,与试用期有关的授权信息可以被从远程设备检索。例如,软件产品可以包括用来经由网络检查远程数据库以检查软件产品的使用是否被授权的指令。然而,在一些情况下,授权信息被本地地存储在执行该软件产品的电子设备上可能是令人期望的。软件产品可以创建在电子设备上本地地存储的授权文件,诸如当软件产品被安装时。用户可以发现文件并且尝试延长软件产品的授权的使用的周期,诸如通过删除或改变文件。
在一个实施例中,软件产品的授权被通过创建在运行软件产品的电子设备上存储的两个授权项来实施,其中每个授权项在不同的时间被创建。例如,一个授权项可以在软件产品被安装时被创建,而另一授权项可以在软件产品首次被执行时被创建。授权项可以为单独的项。例如,一个授权项可以为文件而另一个可以为注册表键,或者授权项可以为单独的文件或注册表键。两个授权项可以被协调使得在它们之间的不一致可以指示软件产品的使用未被授权。
使用在不同的时间所创建的两个授权项可以使得用户更难以发现该两个授权项。如果用户发现授权项中的一个并且改变或者删除它,则因为结果得到的两个授权项之间的不一致性而篡改可能是明显的。因此,用户更难以延长用于软件产品的授权周期。
图1是图示了计算系统100的一个示例的方框图。计算系统100可以包括电子设备110。电子设备110可以为任何适当的电子设备,诸如个人计算机或移动电话。电子设备110可以例如包括处理器104、机器可读存储介质102、第一授权项106、以及第二授权项108。
处理器104可以为任何适当的处理器,诸如中央处理单元(CPU)、基于半导体的微处理器、或适合于指令的检索和执行的任何其他设备。在一个实施例中,计算系统100包括代替或除了处理器104之外的逻辑。作为替换或除了取得、解码、以及执行指令之外,处理器104可以包括一个或多个集成电路(IC)或其他电子电路,所述其他电子电路包括用于执行下文中所描述的功能的多个电子部件。在一个实施方式中,计算系统100包括多个处理器。例如,一个处理器可以执行一些功能而另一处理器可以执行其他功能。
在一个实施方式中,处理器104执行在机器可读存储介质102中存储的指令。机器可读存储介质102可以为任何适当的机器可读介质,诸如电子的、磁性的、光学的或存储可执行指令或其他数据的其他物理存储设备(例如,硬盘驱动器、随机存取存储器、闪速存储器等)。机器可读存储介质102可以例如为计算机可读非暂时性介质。机器可读存储介质102可以包括可由处理器104执行的指令。
机器可读存储介质102可以包括与软件产品112相关联的指令。软件产品112可以为任何适当的软件产品。软件产品112可以被授权以在特定的时间段(诸如六天试用期)期间在处理器104上执行。
第一授权项106和第二授权项108可以为用于指示软件产品112的使用是否被授权的任何适当的项。例如,第一授权项106和第二授权项108可以为文件或注册表键。第一授权项106和第二授权项108可以包括指示软件产品的授权的使用的时间段的信息。第一授权项106和第二授权项108可以包括指示其他授权项的属性的信息。例如,第一授权项106可以包括指示第二授权项108是否已经被创建的信息。
软件产品112可以包括与控制软件产品112是否可以在特定的时间在处理器104上执行有关的指令。例如,软件产品112可以包括用来当软件产品112被安装时生成诸如第一授权项106的第一授权令牌的指令,和当软件产品112首次被运行时生成诸如第二授权项108的第二授权令牌的指令,其中每个授权项是在储存器中存储的文件或在注册表中存储的注册表键。软件产品112可以包括用来基于第一授权项106和第二授权项108的比较来确定软件产品112的使用在特定的时间是否被授权,并且如果确定软件产品112的使用未被授权则禁止软件产品112的使用的指令。
图2A、2B以及2C示出了第一授权项和第二授权项的示例组合,其中两个授权项中的每一个都可以为注册表键或文件。图2A是图示了计算系统200的一个示例的方框图。计算系统200示出了作为在储存器218中存储的授权文件202的第一授权项和作为在注册表220中存储的授权键204的第二授权项。储存器218可以为任何适当的储存器,诸如硬盘驱动器或闪速驱动器。储存器218可以存储用于存储与对软件产品进行授权有关的信息的文件。注册表220可以为任何适当的注册表,诸如存储与操作系统有关的设定的数据库。注册表220可以包括具有与对软件产品进行授权有关的属性的注册表键。处理器104可以在软件产品112被安装时创建授权项中的一个,并且可以在软件产品112的第一执行期间创建另一授权项。图2B是图示了计算系统206的一个示例的方框图。计算系统206包括第一授权文件208和第二授权文件210。图2C是图示了计算系统212的一个示例的方框图。计算系统212包括第一授权密钥214和第二授权密钥216。
图3是图示了用来基于诸如第一授权项106和第二授权项108的第一和第二授权项来确定软件112产品的授权的方法300的一个示例的流程图。例如,第一授权项可以在软件产品112被安装时被创建,而第二授权项可以在软件产品112首次被执行时被创建。信息可以被存储在与软件产品112的授权的使用的时间段有关的第一授权项和第二授权项中。在第一授权项和第二授权项中的信息可以被与当前日期或日期和时间进行比较以确定授权周期是否已经期满。在一些情况下,在第一授权项和第二授权项中的信息可以被相互相比较以确定二者中任何一个授权项是否已经被篡改。
在302处开始并且移动到304,处理器104,诸如通过执行在机器可读存储介质102中存储的指令,在软件产品112被安装时创建第一授权项。例如,软件产品112可以包括用于安装的指令,所述指令包括用来生成授权令牌的指令。第一授权项可以例如为授权文件或授权密钥。
可以以任何适当的方式来创建授权项。处理器104可以在授权项被创建时将信息写入到授权项,诸如通过更新授权密钥属性或者将信息存储在授权文件中。例如,处理器104可以包括关于安装日期或安装时间的信息,诸如通过在安装发生时从系统或互联网时钟接收或检索关于当前日期的信息。信息可以包括基于安装日期所计算的期满日期,诸如从安装起的期满日期九十天。信息可以包括可以被用来检测篡改授权项的标识信息。例如,如果用户在没有标识信息的情况下创建新的授权项,则处理器104可以识别到授权项被用户创建并且不是在软件产品112的安装期间。处理器104可以存储授权项。授权项可以被存储在特定的位置或者使用特定的名称来存储。例如,软件产品112可以包括用于在哪里存储授权项的指令,诸如文件路径或注册表键名称。
继续到306,处理器104,诸如通过执行在机器可读存储介质102中存储的指令来在软件产品112首次被执行时创建第二授权项。第二授权项可以例如为授权文件或授权密钥。第二授权项可以为与第一授权项相比相同类型的或不同类型的项。例如,第一授权项和第二授权项两者都可以为文件或注册表键,或者第一授权项和第二授权项中的一个可以为文件而另一个可以为注册表键。
可以以任何适当的方式来创建第二授权项。第二授权项可以被存储在任何适当的位置中。在一个实施例中,信息被包括在第二授权项中,诸如软件产品112首次被执行的日期或时间。第二授权项可以包括基于第一执行所计算的期满日期,诸如从第一执行起的期满日期三十天。在一个实施例中,处理器104确定是否创建第二授权项。例如,处理器104可以分析第一授权项以确定软件产品112的当前执行是否是软件产品112的第一执行。
在一个实施方式中,关于第二授权项的信息被存储在第一授权项。例如,关于软件的第一执行的日期的信息可以被存储在第一和第二授权项两者中。处理器104可以从第一授权项中检索信息以写入到第二授权项。例如,安装日期或与安装日期有关的期满日期可以从第一授权项中读取并且存储在第二授权项中。
移动到308,处理器104,诸如通过执行在机器可读存储介质102中存储的指令,来基于第一授权项和第二授权项的比较确定软件产品112的使用在特定的时间是否被授权,诸如在特定的日期或日期和时间。例如,用户可以尝试执行软件产品112,并且处理器104可以确定软件产品112的使用在该时间是否被授权。处理器104可以以任何适当的方式将第一授权项和第二授权项相比较。例如,处理器104可以将当前日期与期满日期相比较,所述期满日期诸如在第一授权项和第二授权项中的期满日期或通过将时间段加到第一授权项和第二授权项中的安装日期或第一执行日期所计算的期满日期。期满日期可以被与从互联网时钟所检索到的当前日期相比较,以阻止用户通过改变电子设备110上的系统时钟来延长授权周期。在一个实施方式中,处理器比较软件产品112已经被执行的次数。例如,授权项中的每一个都可以包括指示软件产品112已经执行的次数的数目。数目可以被与允许的最大次数相比较。
在一个实施例中,处理器104比较第一授权项和第二授权项中的信息以确认授权项中的信息是一致的。例如,如果授权项包括不同的第一执行日期、安装日期或期满日期,则其可以指示用户通过改变授权项中的一个或者通过删除和重新创建授权项中的一个篡改了授权项中的一个。
继续到310,如果确定软件产品112的使用未被授权,则处理器104,诸如通过执行在机器可读存储介质102中存储的指令,来阻止软件产品112的使用。处理器104可以以任何适当的方式来禁止软件产品112的使用。例如,处理器104可以停止执行与软件产品112有关的指令。如果确定软件产品112的使用被授权,则处理器104可以继续执行与软件产品112相关联的指令以允许用户使用软件产品112。方法300继续到312并且结束。
图4是图示了与图3的306相对应的、用来创建第二授权项的方法的一个示例的流程图。例如,处理器104可以基于第一授权项中的信息来确定第二授权项是否应该被创建。处理器104可以确定用户是否已经篡改了授权项。例如,如果第二项存在并且第一授权项指示第二项不应该存在,则可以阻止软件产品112的使用。用户可以不正确地相信一个授权项控制软件产品112的授权。检查以确定第二授权项是否应该被创建可以阻止用户能够通过删除第二授权项来避开系统。
在402处开始并且移动到404,处理器104确定第一授权项是否指示第二授权项应该存在。处理器104可以检索第一授权项。例如,处理器104可以从储存器218或从注册表220中检索第一授权项。处理器104可以通过使用文件路径或注册表键名称检索第一授权项。这可以例如响应于执行软件产品112来完成。
第一授权项可以包括关于第二授权项是否已经被创建的任何适当的指示。例如,第一授权项可以在安装时间被创建,而不用在第二授权项被创建时可以被添加的附加的信息,或来自第一授权项的信息可以在第二授权项被创建时被移除。处理器104可以检查第一授权项以查看其是否包含指示第二授权项已经被先前创建的信息或该信息的缺乏。在一个实施例中,处理器在第一授权项被创建时将已知的值写入到第一授权项,并且处理器检查这些已知的值以验证正被分析的文件或注册表键是第一授权项。指示第二授权项何时被创建的第一执行日期可以被存储在第一授权项中。如果第一执行日期不被包括在第一授权项中,则处理器104可以确定第二授权项尚未被创建。
在一些情况下,当软件产品112被卸载时,处理器104可以留下第一授权项和第二授权项,而不删除它们。这可以阻止用户通过卸载并且重新安装软件产品112来避开试用期。例如,如果软件被重新安装,则第一授权项仍然可以是可用的并且指示第二授权项已经被创建。
继续到406,处理器104确定第二授权项是否存在。例如,处理器104可以检查储存器218或注册表220以确定第二授权项是否存在。处理器104可以知道检查特定的位置,诸如特定的文件路径或注册表键名称。可以以任何次序来执行方法400的步骤。例如,在一些情况下,处理器104可以在分析第一授权项以确定第二授权项是否应该存在之前检查第二授权项是否存在。
继续到408,如果确定第二授权项不应该存在并且确定第二授权项存在,则处理器104阻止软件产品112的使用。例如,如果第一授权项指示第二授权尚未被创建,但是第二授权项存在,则其可以指示用户更改或删除了第一授权项,而没有删除第二授权项。可以以任何适当的方式来阻止软件产品112的使用。
如果第一授权项指示第二授权项尚未被创建并且第二授权项不存在,则处理器104可以创建第二授权项。例如,其可能是软件产品112被执行的第一次。方法400继续到410以结束。
图5是图示了与图3的308相对应的、用来将第一授权项与第二授权项相比较的方法的一个示例的流程图。当将第一授权和第二授权项相比较以确定是否允许软件产品112的使用时,处理器104可以确定即使第一授权项指示第二授权项已经被创建第二授权项也不存在。如果第二授权项在其被先前创建时不存在,则处理器104可以阻止软件产品112的使用。第二授权项可能不再存在,例如,因为用户删除了它,诸如尝试延长试用期。用来在第一授权项指示第二授权项已经被创建的情况下确定第二授权项是否存在的比较可以在任何点处完成。例如,比较可以在当处理器104正在确定第二授权项是否应该被创建时的时间处完成。
在502处开始并且移动到504,处理器104确定第二授权项是否存在。例如,处理器104可以尝试在特定的文件路径或注册表键名称处访问第二授权项以确定第二授权项是否存在。
继续到506,如果确定第二授权项应该存在并且确定第二授权项不存在,则处理器104阻止软件产品112的使用。如果第二授权项被创建并且现在不再存在,则其可以指示第二授权项被删除。处理器104可以不重新创建第二授权项,因为在随后的时间创建它可能允许用户延长授权周期。如果确定第二授权项应该存在并且确实存在,则处理器104可以将第一授权项与第二授权项相比较以确定软件产品112的使用是否应该被允许或阻止。方法500继续508以结束。
图6是图示了确定软件产品的使用是否被授权的一个示例600的流程图。在602处开始,软件产品被安装在电子设备上。安装过程可以例如包括将与软件产品有关的指令存储在电子设备上的机器可读存储介质中。移动到604,诸如授权文件的第一授权项可以在安装过程期间被创建和存储。在一些情况下,期满日期可以被插入在授权文件中。例如,试用期可以为在软件产品的安装之后的特定的天数,并且期满日期可以通过确定当前日期(诸如通过使用系统时钟或互联网时钟)并且将试用期天数加到它来计算。
继续到606,用户执行软件产品以使用它。继续到608,处理器确定授权文件(第一授权项)是否指示诸如授权注册表键的第二授权项应该被创建。处理器可以检查在安装时间期间被写入到授权文件的已知的值以验证正被分析的文件是授权文件。处理器可以检查授权文件以得到指示授权密钥是否已经被创建的信息的存在或缺乏。例如,处理器可以检查以查看授权文件是否包括授权密钥被创建的日期。
移动到610,如果确定授权文件指示授权密钥尚未被创建,则处理器检查查看授权密钥是否存在。如果授权密钥存在,则其可以指示授权文件被重新创建,诸如通过删除它并且重新安装软件而不删除授权密钥。如果授权密钥存在,则过程可以继续到618以阻止软件产品的使用。
继续到612,如果确定其确实已经不存在,则授权密钥被创建。继续到614,软件产品的第一开始日期可以通过从系统时钟或从互联时钟检索当前日期或时间来确定。开始日期可以被写入到授权文件和授权密钥。开始日期可以被写入到授权项两者,使得开始日期可以被稍后比较以检测任一授权项是否被删除或改变。在一个实施例中,软件产品试用的期满日期被基于从开始日期起的时间段,诸如从开始日期起的三十天来计算。如果期满日期被基于软件产品的安装日期来确定,则处理器可以确定当前日期是否超过期满日期。例如,参考620,如果期满尚未通过则处理器可以允许软件产品的使用,并且如果当前日期在期满日期之后则可以阻止软件产品的使用。
往回参考608,处理器可以评估授权文件并且确定授权密钥已经被创建。移动到616,处理器可以确定开始日期和期满日期在授权文件和授权密钥中是否是相同的。如果当确定授权密钥确实不存在尝试评估授权密钥时,处理器可以阻止软件产品的使用。如果授权密钥确实存在,但是开始日期和期满日期在授权文件和授权文件之间是不一致的,则处理器可以阻止软件产品的使用。
继续到620,处理器可以确定当前日期是否在期满日期之后。如果这样,移动到620,软件产品的使用被阻止。如果不是,则移动到622,软件产品的使用被允许。每当软件产品被执行时,过程就继续在606处开始。
图7是图示了确定软件产品的使用被授权的一个示例700的方框图。示例700示出了具有作为一个授权项的授权文件702的储存器218和具有作为另一授权项的授权密钥704的注册表220。授权文件702和授权密钥704两者都包括相同的开始日期和相同的期满日期。授权文件702和授权密钥704两者中所示出的期满日期是07/01/2012。如706处所示出的那样,当软件产品正被运行时的当前日期是06/15/2012,其在期满日期07/01/2012之前。如708处所示出的那样,软件产品的使用被允许。
图8是图示了确定软件产品的使用未被授权的一个示例800的方框图。示例800包括储存器218中的作为一个授权项的授权文件802和注册表220中的作为另一授权项的授权密钥804。授权文件802和授权密钥804包括不同的开始日期和相同的期满日期。授权文件802和授权密钥804中所示出的期满日期07/01/2012在当806处所示的软件正被运行时的当前日期06/15/2012之前。然而,因为授权文件802和授权密钥804中的开始日期之间的不一致,所以808示出了软件产品的使用未被授权。
在一些情况下,初始试用期可以用期满日期来设置,但是延长试用期可能是令人期望的。例如,软件厂商可以从请求试用期被延长的客户端接收电话呼叫。可以提供延长试用期诸如持续多个天数或者直到特定的日期为止的延长密钥。可以评估延长密钥并且可以基于延长密钥来更新第一授权项和第二授权项中的期满日期。
图9是图示了用来延长软件产品112的授权周期的方法900的一个示例的流程图。处理器104可以接收延长密钥。延长密钥可以为任何适当的延长密钥,诸如延长日期持续特定的天数或直到特定的日期为止的延长密钥。在一个实施例中,单独的处理器创建延长密钥。例如,延长密钥可以被创建并且经由网络发送到用户或处理器104。
在一个实施例中,延长密钥是20位密钥。例如,延长密钥可以为具有位数sfee-eeee-eeod-dddd-dddc的密钥,其中s是调整成使得密钥满足检查的位,诸如模数11检查,f是设置成0或1以指示试用是否应该被重置的位,并且c是校验和值。e位可以表示用于应用密钥的期满日期。o位指示延长试用期的周数。如果o被设置成0,则其可以指示试用期应该被延长直到由d位所表示的日期为止。
在902处开始并且移动到904,处理器104接收指示用来延长软件产品112的授权的使用的时间段的时间段的延长密钥。处理器104可以以任何适当的方式来接收延长密钥,诸如从用户输入到与处理器104进行通信的输入设备或经由网络。延长密钥可以以任何适当的方式来更新试用期。例如,延长密钥可以为试用结束提供特定的日期,指示试用应该被延长持续特定的天数或重新开始试用期。密钥可以通过任何适当的增加来延长试用期,诸如按天数,小时或分钟。在一些情况下,处理器104可以实施与密钥有关的规则。例如,如果延长时间将以其他的方式延长原始试用期超过一年,则处理器104可以通过向下调整延长时间来确保原始试用期不会延长到一年以上。
移动到906,处理器104基于延长密钥来调整第一授权项和第二授权项以按照所指示的时间段延长授权的使用的周期。例如,写入到第一授权项和第二授权项的期满日期可以在第一授权项和第二授权项中被更新。方法900继续到908并且结束。
图10是图示了用来延长软件产品的授权周期的方法1000的一个示例的流程图。例如,处理器104可以将延长密钥或延长密钥的一部分存储在第一授权项和第二授权项两者中。在第一授权项和第二授权项中所存储的延长密钥可以被比较以确定延长密钥的列表是否是相同的。这可以被完成例如以阻止用户重新使用延长密钥。用户可以接收用来延长当前的试用期三十天的延长密钥,并且阻止用户重复使用密钥以保持延长试用期三十天可能是令人期望的。处理器104可以在任何适当的时间检查延长密钥,诸如每当软件产品112被执行时。
在1002处开始并且移动到1004,处理器104将延长密钥存储在第一授权项中。处理器104可以存储附加的信息,诸如延长密钥被使用的日期。处理器104可以存储延长密钥的一部分或整个延长密钥。
移动到1006,处理器104将延长密钥存储在第二授权项中。与延长密钥有关的附加的信息可以被存储在第二授权项中,并且可以存储密钥的一部分或整个密钥。
继续到1008,处理器104确定文件中的延长密钥是否与注册表键中的延长密钥相关。例如,处理器104可以确定在第一授权项中找到的任何延长密钥是否也在第二授权项中,并且反之亦然。在一些情况下,处理器104可以检查延长密钥的次序在第一授权项中与在第二授权项中是否是相同的。
在一个实施例中,延长密钥包括指示第一授权项和第二授权项应该被重新设置的信息。例如,即使两个授权项由于篡改而不一致,确定不一致也可能是令人期望的,诸如对于有价值的客户来说,使得软件产品可以被使用。处理器104可以例如更新两个授权项中的开始日期和结束日期两者,使得它们是一致的。在一些情况下,处理器104可以调整或删除关于先前的延长密钥的信息,使得信息在第一授权项和第二授权项之间是一致的。
继续到1010,如果确定延长密钥不相关,则处理器104阻止软件产品112的使用。这可以完成,例如因为试用期已经被无效地延长。如果延长密钥确实相关,则处理器104可以基于所延长的期满日期来确定软件产品112的使用是否被授权。方法1000继续到1012以结束。
图11是图示了计算系统1100的一个示例的方框图。计算系统1100包括处理器104、储存器218、以及注册表220。储存器218包括作为一个授权项的授权文件1104,并且注册表220包括作为另一授权项的授权密钥1110。处理器104可以使用加密密钥1106对授权文件1104进行加密并且可以使用加密密钥1112来对授权密钥1110进行加密。使用两个单独的加密密钥可以使系统更安全,因为能够对授权文件1104和授权密钥1110中的一个进行解密将不允许用户对另一个进行解密。因为这两个授权项被分析以确定它们是否匹配,更新两个授权文件中的一个将不允许用户延长软件产品112的使用。
通过比较在单独的时间所创建的两个授权项来确定软件产品的使用是否被授权可能使得用户更难以检测关于授权周期的信息被存储在哪里。因此,用于软件产品的试用期可能是更难以避开。试用期可以为厂商提供宝贵的销售工具以将产品引入到用于评估的潜在客户。