ApexSql Log试用版取消导出脚本每10行导出一行的限制。

状态不好跑到服务器上update了一下,竟然没有写条件,结果发现这个库没有备份。。。然后悲剧发生了!!

因为是SQL2008,好多软件都不支持,最后找到 ApexSql Log ,非常好用,但是试用版除了14天限制外还限制了脚本导出,只能一条条导出么。。。汗,虽然几百条数据,但也够折腾的。。

就研究了下,取除了这个试用版导出条数的限制,看了下算法写注册机也比较简单,但是懒的写了,反正这东西基本上就用一次,几百刀买个正版当然不可能,我想着还有别人也可能用得到,就放上来。

版本是 2014.04.1133  目前官网最新版本。

http://pan.baidu.com/s/1c0BHafQ

注册程序的部分代码:

public static bool Manually(ActivationManager manager, string productKey, string activationCode)
{
    bool flag;
    manager.WriteActivationInformation(new ActivationResponse(FileHelper.Unzip(activationCode.FromBase64String())).Serialize());
    if (!(flag = manager.ActivationCodeIsValid || (manager.State == ActivationState.ExtendedEvaluation)))
    {
        string_1 = string.Format("Invalid activation code [{0}]", activationCode);
        return flag;
    }
    string_1 = "OK";
    return flag;
}

  

private void AnalyzeServerResponse(string serverResponse)
{
    XmlDocument document = new XmlDocument();
    document.LoadXml(serverResponse);
    XmlElement documentElement = document.DocumentElement;
    if ((documentElement != null) && ("ResponseInfo" == documentElement.Name))
    {
        foreach (XmlNode node in documentElement.ChildNodes)
        {
            if ("ProductId" == node.Name)
            {
                this.ProductId = node.InnerText;
            }
            else if ("UnlockCode" == node.Name)
            {
                this.UnlockCode = node.InnerText;
            }
            else if ("HardwareId" == node.Name)
            {
                this.HardwareId = node.InnerText;
            }
            else if ("ActivationCode" == node.Name)
            {
                this.ActivationCode = node.InnerXml;
                if (node.FirstChild != null)
                {
                    foreach (XmlNode node2 in node.FirstChild.ChildNodes)
                    {
                        if ("version" == node2.Name)
                        {
                            this.Version = node2.InnerText;
                        }
                        else if ("reginfo" == node2.Name)
                        {
                            this.RegistrationInfo = node2.InnerText;
                        }
                        else if ("licenseNum" == node2.Name)
                        {
                            this.LicenceNumber = node2.InnerText;
                        }
                        else if ("trialExpiry" == node2.Name)
                        {
                            this.TrialExpire = node2.InnerText;
                        }
                        else if ("licenseExpiry" == node2.Name)
                        {
                            this.LicenceExpire = node2.InnerText;
                        }
                        else if ("signature" == node2.Name)
                        {
                            this.Signature = node2.InnerText;
                        }
                        else if ("activationKey" == node2.Name)
                        {
                            this.ProductKey = node2.InnerText;
                        }
                    }
                }
            }
            else if ("ReasonCode" == node.Name)
            {
                this.ReasonCode = node.InnerText;
            }
            else if ("Reason" == node.Name)
            {
                this.Reason = node.InnerText;
            }
            else if ("Reactivation" == node.Name)
            {
                this.Reactivation = node.InnerText;
            }
            else if ("Explanation" == node.Name)
            {
                this.Explanation = node.InnerText;
            }
            else if ("Resolution" == node.Name)
            {
                this.Resolution = node.InnerText;
            }
        }
    }
}

  

public virtual void WriteActivationInformation(string activationData)
{
    LicenceManager manager = new LicenceManager(this.apexSQLProducts_0, this.string_1);
    ActivationResponse response = ActivationResponse.Deserialize(activationData);
    this.activationInfo_0.HardwareID = response.HardwareId;
    this.activationInfo_0.Version = int.Parse(response.Version);
    this.activationInfo_0.NumberOfLicenses = int.Parse(response.LicenceNumber);
    this.activationInfo_0.RegistrationInformation = response.RegistrationInfo;
    this.activationInfo_0.ProductKey = response.ProductKey;
    this.activationInfo_0.TrialExpiryDate = DateTime.ParseExact(response.TrialExpire, "MM-dd-yyyy", CultureInfo.InvariantCulture);
    this.activationInfo_0.LicenseSubscriptionExpiryDate = DateTime.ParseExact(response.LicenceExpire, "MM-dd-yyyy", CultureInfo.InvariantCulture);
    this.activationInfo_0.Signature = response.Signature;
    if (!manager.SaveLicenceFile(this.activationInfo_0))
    {
        throw new Exception("Unable to save license file.");
    }
    this.Refresh();
}

  看起来还是蛮简单的,只要对XML字符串进行ZIP算法压缩(程序中有)再进行base64,然后在验证方法直接返回TRUE基本上就OK了。

当然这样比较暴力,不符合俺一向认真负责的态度~~~但是不暴力的话就得更改下publickey……

然后。。就没有然后了,如果以后有时间,还可以再研究一下。

时间: 2024-12-17 07:57:02

ApexSql Log试用版取消导出脚本每10行导出一行的限制。的相关文章

ApexSql Log使用体会

今天碰到一条基础数据被删除导致报错,远程到服务器,刚好前几天有恢复一个备份库,找到那条记录手动插回去先解决了. 其它地区也偶有发生这种情况,数据莫名丢失,应该是被误删的.我们这边系统如果有删除是有做日志的,检查日志表没发现操作,可能是同事的系统或存储过程造成的. 找了一些数据库工具,Log Explorer听说不错,但好像只支持到SQL2005 新版本的有个叫ApexSql Log的可以支持,官网有试用版,最新版是2016.3. 网上教程实在太少太少了,偶尔几篇还是抄来抄去的,好在有个高手(ES

Cacti图形数据自动导出脚本(二)

因业务需求 上篇文章链接 Cacti图形数据自动导出脚本(一) 在上一篇文章中写的脚本只能在每月1日下载所有的月数据的图 但是有个别图形需要每月指定日期下载 特在此将脚本进行了小修改 添加了每月下载月数据时日期的判断 要求如下: 1.本脚本会每日.每月自动下载图形树中所有的图形中的日数据和月数据 2.添加到图形树中的图形名称前面必须添加*号.也可不加,但是得更改脚本中的sql语句 3.图形名称中不能含有空格等linux中非法的文件名字符 4.需要做每月指定日期导出月数据的,需要在指定的图形名称后

daocke镜像批量导出脚本

脚本作用 1.批量导出Docker Images;2.部分导出,通过指定Docker Images ID 到脚本“LIST”变量:3.支持相同ID,不同REPOSITORY名称备份: 例如: docker images kry1702/coredns 1.3.1 eb516548c180 5 months ago 40.3MB k8s.gcr.io/coredns 1.3.1 eb516548c180 5 months ago 40.3MB 注意:备份文件名称格式为:kry1702_coredn

Flex Builder 4.6 试用版破解

[转]http://hi.baidu.com/cm186man/blog/item/148658ce557c0323b700c853.html 具体步骤如下:1.到Adobe官网下载FlashBuilder 4.6,有简体中文版: 语言:简体中文(Simplified)http://trials3.adobe.com/AdobeProducts/FLBR/4_6/win32/FlashBuilder_4_6_LS10.exe 2.安装时,不用序列号,直接选择安装试用版: 3.安装完成后在安装目录

.NET试用版授权控件WinLicense

Themida是先进的微软视窗软件保护系统,专为了那WinLicense 结合了 Themida 保护功能以及高级注册管制.它提供了最强和具伸缩性的技术,使开发者可以安全地分发他们软件的试用版和完全版. 具体功能: 作为软件保护层的WinLicense WinLicense是一个强劲的保护系统, 专为了那些想保护自己的程序不被先进的反向工程和黑客软件破解的软件开发者而开发的.开发者不需要更改任何的原代码,和不需要程序编制的经验使用WinLicense. WinLicense使用SecureEng

Oralce 导出脚本命令,定时执行

原文:Oralce 导出脚本命令,定时执行 @echo off @echo ================================================ @echo  windows环境下Oracle数据库的自动备份脚本 @echo  1.备份导出文件时自动使用当前日期进行命名. @echo  2.urls 是临时目录,url,是最终保存目录 ,保存后会删除临时目录 @echo  3.这是Oracle 11g 的导出命令,下面是5个用户的导出 expdp ppp/[email

PLSQL Developer 试用版30天试用期到了的解决办法

PLSQL Developer 试用版有30天限制,到了限制时间后,将如下注册表删除,就可以继续使用30天! HKEY_CURRENT_USER\Software\Allround Automations HKEY_CURRENT_USER\Software\Microsoft\Security

VS2008试用版到期的解决办法

正常: vs2008试用期到期解决办法[注册码] vs2008试用期结束之后, 或者在刚刚安装完成后 在"控制面板"中启动"添加删除程序", 选中Vs2008,点击"更改.删除", 别担心会真的删除IDE,在删除或之前还会有提示的. 在出现的维护模式对话框中, 选择下一步,输入下面的CD-Key. 点击升级->出现成功画面即可完美将试用版升级成为正式版. CD-Key:PYHYP-WXB3B-B2CCM-V9DX9-VDY8T . 自己:

Advanced Office Password Recovery试用版有哪些限制

相较于Advanced Office Password Recovery正式版,Advanced Office Password Recovery试用版存在着诸多限制,这些将都会影响工作效率以及用户体验.本教程将带你了解Advanced Office Password Recovery试用版. Advanced Office Password Recovery试用版的限制有以下限制: 1.能够立刻破解的最长密码长度是3个字符. 2.“暴力破解”可破解的最长密码长度是4个字符,“字典攻击”只能显示