随笔-20  评论-9  文章-0  trackbacks-0
  2007年5月10日
 QQ可以通过参数进行快捷登录,即可以完成自动登录。

启动命令为:

"C:\Program Files\Tencent\QQ\QQ.exe"  /START QQUIN:12345678 PWDHASH:48enw0KT3GsgFPQw1wuTDw== /STAT:41

QQUIN为QQ号码,PWDHASH为QQ密码的摘要的Base64编码,经过测试发现其摘要算法为MD5

posted @ 2007-05-10 21:51 冰封王座(.net)博客 阅读(83) | 评论 (0)编辑
  2007年4月27日
 

创建代码签名:

1. 制作cab

制作cab包之前首先要编写 .inf 文件,这个比较麻烦,可以参考现成的例子,如:

[version]

Signature="$CHICAGO$"

AdvancedINF=2.0

 

[Add.Code]

HebcaMailClient.ocx=HebcaMailClient.ocx

 

[HebcaMailClient.ocx]

file-win32-x86=thiscab

clsid={78D1D24A-C552-4402-95FA-E9CA2E8924F2}

FileVersion=1.0.1.1

RegisterServer=yes

 

制作cab包的工具很多,有CabMakercabArcMakeCab等。我用的是CabMaker,挺好用的,打开后选择一个路径打包就可以了。

 

2. 获取代码签名证书

获取代码签名证书,可以从CA认证公司去申领。如果是个人测试,可以自己创建测试用的证书。可以用makecert 工具(dotnet框架下就有),也可以用windows2000windows2003自带数字证书认证服务创建比较正规的测试证书。创建过程如下:

1) 在添加删除程序里面选择 添加/删除windows组件。

2) 选择 证书服务 然后安装即可。默认会安装证书申请的web页面。

3) 在本地输入:http://localhost/certsrv 。选择第二项然后按照提示申请代码证书即可。如果有usbkey的话,可以选择将证书颁发到usbkey上。

4) 选择管理工具-à证书颁发机构。然后将待定申请的代码签名证书选择颁发即可。

5) 在客户端需要将测试CA的根证书安装上。输入:http://ca serverIp/certsrv,选择第一项安装根证书即可。

3. cab包进行签名

这儿用signcodecab包进行签名

在命令提示行中执行

signcode

之后进入signcodewizard:

step1.选择要签名的cab文件

step2.自定义

step3.从文件中选择 myNew.spc

step4.csp中的私钥/密钥容器:myNewKey

step5.sha1

step6.next

描述、时间戳如果有的话可以添上。

4. 验证所作的签名

可以使用chktrust工具对所作的签名进行验证,

在命令行中直接使用chktrust   *.cab即可。如果出现预料结果则成功,否则,极有可能是证书有效期出现了问题。

5. 网页中测试:

</head>后面添加:

 <OBJECT classid="CLSID:78D1D24A-C552-4402-95FA-E9CA2E8924F2" CODEBASE="Package.cab#version=1,0,1.1" id="mc" VIEWASTEXT width="1" height="1">

 </object>

进行测试即可。

posted @ 2007-04-27 17:02 冰封王座(.net)博客 阅读(437) | 评论 (1)编辑
 class Program
    
{
        
static void Main(string[] args)
        
{
            X509Certificate2 cert 
= CreateCertificate();
            
//cert.ToString();
            Console.Write(cert.ToString());
            Console.Read();
        }



        
public static X509Certificate2 CreateCertificate()
        
{
            
// makecert -r -pe -n "CN=TestUser" -ss my -sr currentuser 
            
//      -sky exchange .\TestUser.cer

            
//const string MakeCert = "C:\\Program Files\\Microsoft Visual Studio 8\\Common7\\Tools\\Bin\\makecert.exe";
            const string MakeCert = "C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0\\Bin\\makecert.exe";

            
//string fileName = Path.ChangeExtension(Path.GetTempFileName(), "cer");
            string fileName = Path.ChangeExtension("d:\\""cer");
            
string userName = Guid.NewGuid().ToString();

            
string arguments =
                
string.Format("-r -pe -n \"CN={0}\" -ss my -sr currentuser -sky exchange \"{1}\"",
                userName, fileName);

            Process p 
= Process.Start(MakeCert, arguments);
            p.WaitForExit();

            
byte[] certBytes = ReadFile(fileName);
            X509Certificate2 cert 
= new X509Certificate2(certBytes);
            
return cert;
        }


        
internal static byte[] ReadFile(string fileName)
        
{
            
using (FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            
{
                
int size = (int)f.Length;
                
byte[] data = new byte[size];
                size 
= f.Read(data, 0, size);
                
return data;
            }

        }


    }
posted @ 2007-04-27 10:39 冰封王座(.net)博客 阅读(953) | 评论 (3)编辑
  2007年4月2日
javascript 常用的编码格式有:escape(), encodeURL(), encodeURIComponent() 区别如下:

escape() 方法:

采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。
不会被此方法编码的字符: @ * / +


encodeURI() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。
不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '

encodeURIComponent() 方法:

把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。
不会被此方法编码的字符:! * ( ) '
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使用escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
posted @ 2007-04-02 16:56 冰封王座(.net)博客 阅读(1216) | 评论 (1)编辑
  2007年2月9日
1。熟悉C#的人对于两个字符串比较的代码一定很了解:
(string1==string2)
但在java中,这个代码即使在两个字符串完全相同的情况下也会返回false
Java中必须使用string1.equals(string2)来进行判断

补充
如果:
string s1=new String("Hello");
string s2=new String("Hello");
则(s1==s2)=false

如果:
string s1="Hello";
string s2="Hello";
则(s1==s2)=true;
因为他们指向的同一个对象。

如果把其他变量的值赋给s1和s2,即使内容相同,由于不是指向同一个对象,也会返回false。所以建议使用equals(),因为equals比较的才是真正的内容
posted @ 2007-02-09 15:41 冰封王座(.net)博客 阅读(58) | 评论 (1)编辑
  2007年2月3日
 

Mysql 命令

1. 登录数据库

mysql –h hostname –u username –p

enter password:******

2.         启动、停止数据库服务

net start mysql

net stop mysql

3.         创建用户

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {tbl_name | * | *.* | db_name.*}
    TO user_name [IDENTIFIED BY 'password']
        [, user_name [IDENTIFIED BY 'password'] ...]
    [WITH GRANT OPTION]

Grant 权限列表 on 数据库名.表名 to 用户名@主机名 identified by 口令

 

实例(1):授权给用户user1 所有数据库的所有权限,并且可以在任何主机连接数据库grant all privileges on *.* to user1@”localhost” identified by ‘123456’

       Grant all privileges on *.* to user1@”%” identified by ‘123456’

      

实例(2):增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";

4.         修改密码

修改密码有两种方法

1) 直接修改数据库服务器中mysql数据库的表 user

如:use mysql

Update user set password=password(“admin”) where user=’root’ and host=’localhost’;

        Flush privileges;

注:flush 是清除缓存语句,

Flush PRIVILEGES mysql数据库授权表中重新装载权限。

2)        使用set password语句

Set password for root@localhost=password(‘123456’)

5.         创建数据库

1) 查看数据库

Show databases

2) 创建数据库

Drop database if exists studentinfo

Create database studentinfo

如果存在数据库studentinfo 则删除重新建立

6.         创建表

1) use studentinfo

drop table if exists student;

create table student(

        id int not null auto_increment,

        name varchar(20) not null default ‘name’,

        math int not null default 60,

        primary key (id));

)

Desc studentinfo 查看表结构

7.         插入操作

Insert into studentinfo values(1,’liying’,98);

Insert into studentinfo (id,name) values(1,’liying’);

可以从文件中导入数据

Load data infile ‘student.txt’ into table student

8.         查询、删除、修改操作

直接在 mysql>命令符下 运行sql语句即可

9.         修改表结构

1) 为表student增加一列english

Alter  table student add (English int not null default 60);

2) 修改name的数据类型

Alter  table student modify name varchar(30) not null

3) 修改english 的默认值

Alter table student alter English  set default 100

4) 删除english的默认值

Alter  table student alter English  drop default;

 

             

posted @ 2007-02-03 10:57 冰封王座(.net)博客 阅读(69) | 评论 (0)编辑
  2007年1月25日
            DotNetOpenMail.EmailMessage email = new DotNetOpenMail.EmailMessage();
            
            email.FromAddress 
= new DotNetOpenMail.EmailAddress("zhifengwu1211@126.com");
            
            DotNetOpenMail.EmailAddressCollection toAddresses 
= new DotNetOpenMail.EmailAddressCollection();
            DotNetOpenMail.EmailAddress toAddress 
= new DotNetOpenMail.EmailAddress("zhifengwu1211@126.com");
            toAddresses.Add(toAddress);
            email.ToAddresses.Add(toAddress);

            email.Subject 
= "this is test";
            DotNetOpenMail.SmtpServer smtpserver 
= new DotNetOpenMail.SmtpServer("192.168.2.129");
            
            StreamReader readfile 
= new StreamReader("d:\\mycert.cer");
            Byte[] fileBytes 
= System.Text.Encoding.Default.GetBytes(readfile.ReadToEnd());
            
            DotNetOpenMail.FileAttachment fileAttachment 
= new DotNetOpenMail.FileAttachment(fileBytes);
            fileAttachment.FileName 
= "mycert.cer";
            email.AddMixedAttachment(fileAttachment);
            

            
bool result=email.Send(smtpserver);
           
            
if (result == true)
                
this.label1.Text = "success";
            
else
                
this.label1.Text = "error";
posted @ 2007-01-25 21:37 冰封王座(.net)博客 阅读(377) | 评论 (2)编辑
  2006年12月18日

1。尝试捕获异常
2。捕获异常后,判断能否从异常中恢复。
3。如果不能,则需要对异常进行处理,同时制定相应的异常处理策略集。
      异常处理策略可以有一下几种:
         1)捕获,不作处理,继续向上传播。
         2)捕获,对异常进行包装,再进行抛出。而以前的异常信息作为新异常信息的一部分。这样作可以记录整个的异常出现的轨迹,便于诊断。
         3)捕获,替代原有异常,抛出新异常。这样可以隐藏一些敏感信息。

posted @ 2006-12-18 21:58 冰封王座(.net)博客 阅读(37) | 评论 (0)编辑
  2006年12月17日

不要手动的拼接Sql语句,这样容易造成SQL注入攻击,可以写成Sql参数的形式(SqlParameter)。

posted @ 2006-12-17 11:44 冰封王座(.net)博客 阅读(80) | 评论 (0)编辑
  2006年12月14日
1。在页面后台代码中写相应的映射函数:
    public string GetDescByValue(object va)
    
{
        
return LoadPageItem.GetHeadShipTextByValue(va.ToString());   
    }
2。在页面的HTML脚本中修改邦定代码:
<asp:TemplateColumn HeaderText="职称">
            
<ItemStyle Width="10%" />
            
<ItemTemplate>
                
<asp:Label ID="Label5" runat="server" Text='<%# GetDescByValue(DataBinder.Eval(Container.DataItem,"HeadShip")) %>'></asp:Label>
            
</ItemTemplate>
        
</asp:TemplateColumn>
posted @ 2006-12-14 10:28 冰封王座(.net)博客 阅读(39) | 评论 (0)编辑