码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2015-10-09 19:59:14      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:

状态不好跑到服务器上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……

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

 

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

标签:

原文地址:http://www.cnblogs.com/gsyifan/p/ApexSql_Log_unpack.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!