再次发布SQL Prompt 3.8的新的patch,解决了不能格式化T-SQL的问题

 上一篇关于推荐SQL Prompt 3.8的随笔,园子里几位朋友回复反应不能使用格式化功能,并强烈要求再次解决该问题,

      所以昨天晚上弄到凌晨2点,最终的SQL Prompt补丁:
下载地址:/Files/jintan/Sql_Prompt_RedGate.Licensing.Client.rar
支持格式化SQL

其实破解过程很简单,没有涉及到脱壳,跟踪等。

大致的思路是这样的:
public int DaysLeftInTrial 这个属性返回值大于0,我这里是14,
       public int DaysLeftInTrial
        
{
            
get
            
{
                
int days;
                
if (this.TrialStatus != TrialStatus.InTrial)
                
{
                    
return 0;
                }

                
if (this.d == DateTime.MinValue)
                
{
                    TimeSpan span 
= DateTime.UtcNow.Subtract(this.b);
                    days 
= 14 - span.Days;
                }

                
else
                
{
                    days 
= this.d.Subtract(DateTime.UtcNow).Days;
                }

                
if (days < 0)
                
{
                    days 
= 14;
                }

                
return days;
            }

        }
 


为了保险起见,我又修改了TrialStatus ,
public TrialStatus TrialStatus 

     get{
return TrialStatus.InTrain; } 
     set{.} 

这样已经可以保证永远都是试用并且不过期。

最后修改IL代码,我用的是http://www.codeproject.com/KB/dotnet/NetDasm.aspx这个工具修改IL,配合Reflector使用
当然你也可以直接用SDK里面的ildasm+ilasm工具修改。

这次不用做去掉强命名的操作了,直接copy到目录覆盖原来的就行了。
注意:经测试,一定要去掉强命名才能使用,请自己去掉RedGate.Licensing.Client.dll的强命名。

对于Red-Gate的其他产品,同样可以使用上面的方法,应该没有问题的。

注:
上个版本修改的地方是:
public bool get_Activated()
{
    
return true;
}
对应的IL:
Code:
method public hidebysig specialname instance bool get_Activated() cil managed {
.maxstack 8
L_0000: ldc.i4.1
L_0001: ret
}
但是不知道什么原因,格式化的菜单一直是灰色。所以才有现在的这个Patch

posted @ 2008-06-16 19:11  代码乱了  阅读(7951)  评论(68编辑  收藏  举报