C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。 http://blog.csdn.net/lgq_12345/archive/2007/05/24/1624822.aspx
2007-07-26 13:19
666 查看
C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。
过程如下:
里面有两个方法
Encrypt(string pToEncrypt,string sKey) //加密
Decrypt(string pToDecrypt,string sKey) //解密
using System;
using System.Runtime.InteropServices;
namespace 名称空间
{
// 首先建立接口,这个是Com必须使用的
[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}
// 写接口的实现
[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
public class 类名称 : IEncrypt
{
public string Encrypt(string pToEncrypt,string sKey)
{
// 复制FAQ加密代码
}
public string Decrypt(string pToDecrypt,string sKey)
{
// 复制FAQ解密代码
}
}
}
然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll
然后用如下工具
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb //regasm命令行工具作用就是为.NET组件生成可以供COM环境调用的类型库
这个.tlb文件就是类型库,可以由vb6和vc++6引用。
注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。
还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用
1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。
代码如下
一 生成.net程序集:
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
namespace Csic
{
// 首先建立接口,这个是Com必须使用的
[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}
// 写接口的实现
[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
public class Crypt : IEncrypt
{
public string Encrypt(string pToEncrypt,string sKey)
{
// 复制FAQ加密代码
}
public string Decrypt(string pToDecrypt,string sKey)
{
// 复制FAQ解密代码
}
}
}
把上面的文件保存成vs.net项目的一个类库工程。
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
在命令行内打下
cd c:/ <回车>
sn -k myKey.snk<回车>
就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口。
在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把
[assembly: AssemblyKeyFile("")]
改成
[assembly: AssemblyKeyFile(@"C:/myKey.snk")]
把[assembly: AssemblyVersion("1.0.*")]
改成
[assembly: AssemblyVersion("1.0.0.0")] // 注意:这时你的Com组件版本为1.0.0.0版
然后按Shift + Ctrl + B键生成dll库(使用Release模式),假设是Csic.Crypt.dll。
这时候,程序集就建立成功了。
二、注册该程序集并创建一个类型库
仍然使用开始菜单中的Vistual Studio .Net命令提示符
进入你的项目目录,假设为D:/myProject/bin/Release
在对话框中输入
d:<回车>
cd myproject/bin/release<回车>
然后输入 dir 命令可以看见Csic.Crypt.dll文件
然后输入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回车>
然后就在这个目录下生成了Csic.Crypt.tlb类型库文件。不要关闭此提示符窗口。
这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件。
这个regasm 实用程序将创建一个类型库并在 Windows 注册表中对其进行注册,以使 PhysServer2.dll 中的类对 COM 客户端可用 。
三、 将程序集添加到全局程序集缓存中
进入提示符窗口,输入
gacutil /I Csic.Crypt.dll<回车>
这时,你的这个dll就被复制到全局程序集缓存中了。也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了。
四、使用方法
asp内的使用方法
set obj = Server.CreateObject("Csic.Crypt")
dim str1
str1 = obj.Encrypt("要加密内容","密码") // 加密
dim str2
str2 = obj.Decrypt("要解密内容","密码") // 解密
注意:上面的这样的字符串:CB52E990-185E-4448-A7E8-C88ECAD563AB
是使用vs.net“工具”中“创建GUID”自动生成的。
过程如下:
里面有两个方法
Encrypt(string pToEncrypt,string sKey) //加密
Decrypt(string pToDecrypt,string sKey) //解密
using System;
using System.Runtime.InteropServices;
namespace 名称空间
{
// 首先建立接口,这个是Com必须使用的
[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}
// 写接口的实现
[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
public class 类名称 : IEncrypt
{
public string Encrypt(string pToEncrypt,string sKey)
{
// 复制FAQ加密代码
}
public string Decrypt(string pToDecrypt,string sKey)
{
// 复制FAQ解密代码
}
}
}
然后用vs.net打包成.dll类库文件,假设名称为MyEncrypt.dll
然后用如下工具
regasm MyEnCrypt.dll /tlb:MyEncrypt.tlb //regasm命令行工具作用就是为.NET组件生成可以供COM环境调用的类型库
这个.tlb文件就是类型库,可以由vb6和vc++6引用。
注意上面的guid是使用vs.net工具菜单里面的创建guid工具生成的。
还要注意,vs.net自动生成的assemblyinfo.cs文件中必须添加强名称和版本号,因为Com组件需要版本号,不要改动版本号,也不要用vs.net自动的1.*这样的版本号,最好使用
1.1.1.1这样的固定版本,而且必须一次添加,不能多次添加。
代码如下
一 生成.net程序集:
using System;
using System.IO;
using System.Text;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
namespace Csic
{
// 首先建立接口,这个是Com必须使用的
[Guid("61BB24CB-4C2C-40f8-9E13-1AC5E558D56A")]
public interface IEncrypt
{
string Encrypt(string pToEncrypt,string sKey);
string Decrypt(string pToDecrypt,string sKey);
}
// 写接口的实现
[Guid("CB52E990-185E-4448-A7E8-C88ECAD563AB")]
public class Crypt : IEncrypt
{
public string Encrypt(string pToEncrypt,string sKey)
{
// 复制FAQ加密代码
}
public string Decrypt(string pToDecrypt,string sKey)
{
// 复制FAQ解密代码
}
}
}
把上面的文件保存成vs.net项目的一个类库工程。
然后使用vs.net的“Vsitual Studio .Net工具”-->Vistual Studio .Net命令提示符
在命令行内打下
cd c:/ <回车>
sn -k myKey.snk<回车>
就在C盘根目录下生成一个名叫myKey.snk的强名称文件,然后关闭提示符窗口。
在vs.net的那个类库工程自动生成的AssemblyInfo.cs文件内把
[assembly: AssemblyKeyFile("")]
改成
[assembly: AssemblyKeyFile(@"C:/myKey.snk")]
把[assembly: AssemblyVersion("1.0.*")]
改成
[assembly: AssemblyVersion("1.0.0.0")] // 注意:这时你的Com组件版本为1.0.0.0版
然后按Shift + Ctrl + B键生成dll库(使用Release模式),假设是Csic.Crypt.dll。
这时候,程序集就建立成功了。
二、注册该程序集并创建一个类型库
仍然使用开始菜单中的Vistual Studio .Net命令提示符
进入你的项目目录,假设为D:/myProject/bin/Release
在对话框中输入
d:<回车>
cd myproject/bin/release<回车>
然后输入 dir 命令可以看见Csic.Crypt.dll文件
然后输入:regasm /tlb Csic.Crypt.tlb Csic.Crypt.dll<回车>
然后就在这个目录下生成了Csic.Crypt.tlb类型库文件。不要关闭此提示符窗口。
这时候,这个.dll的.net程序集就变成一个标准的Com组件了,但是还不能用,必须让它变成全局Com组件。
这个regasm 实用程序将创建一个类型库并在 Windows 注册表中对其进行注册,以使 PhysServer2.dll 中的类对 COM 客户端可用 。
三、 将程序集添加到全局程序集缓存中
进入提示符窗口,输入
gacutil /I Csic.Crypt.dll<回车>
这时,你的这个dll就被复制到全局程序集缓存中了。也就是说无论在这个电脑的哪个硬盘上都可以使用此dll组件了。
四、使用方法
asp内的使用方法
set obj = Server.CreateObject("Csic.Crypt")
dim str1
str1 = obj.Encrypt("要加密内容","密码") // 加密
dim str2
str2 = obj.Decrypt("要解密内容","密码") // 解密
注意:上面的这样的字符串:CB52E990-185E-4448-A7E8-C88ECAD563AB
是使用vs.net“工具”中“创建GUID”自动生成的。
相关文章推荐
- C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。
- C#写的程序集注册成标准的Com组件,在asp中用Server.CreateObject()调用。
- C#环境下的钩子详解(转自http://blog.csdn.net/stevenson_aspdotnet/archive/2010/03/04/5346725.aspx)
- android 中用Intent提取缩略图和原始图像(转载http://blog.csdn.net/serverside/archive/2010/05/28/5631480.aspx)
- 在ASP.NET程序中存储和调用word文件 http://blog.csdn.net/bcdliang/archive/2005/05/12/373886.aspx
- C#事件机制初次接触 http://blog.csdn.net/fenghao_5555/archive/2007/08/23/1756424.aspx
- ASP.net输出JS脚步的类(无AJAX框架)(原作者发布地址http://blog.csdn.net/zhoufoxcn/archive/2008/04/21/2312440.aspx)
- 常用正则表达式(轉自http://blog.csdn.net/21aspnet/archive/2007/03/21/1535747.aspx)
- 新版公农历转换类(C#) 转自http://blog.csdn.net/BlueDog/archive/2006/12/13/1440594.aspx
- ASP.net输出JS脚步的类(无AJAX框架)(原作者发布地址http://blog.csdn.net/zhoufoxcn/archive/2008/04/21/2312440.aspx)
- ASP.net输出JS脚步的类(无AJAX框架)(原作者发布地址http://blog.csdn.net/zhoufoxcn/archive/2008/04/21/2312440.aspx)
- [转] 在ASP.NET下用Microsoft Excel进行数据分析与报表(ASP.Net)[http://blog.csdn.net/hoker_long/archive/2004/09/21/112470.aspx]
- [转]C#数据库连接字符串 [http://blog.csdn.net/xiaokexinger/archive/2007/03/26/1541441.aspx]
- ASP.NET操作Word文档 http://blog.csdn.net/kaigood/archive/2007/01/18/1486607.aspx
- C#向Excel报表中插入图片的2种方法 http://blog.csdn.net/net_lover/archive/2007/07/23/1702797.aspx
- Asp.net SESSION管理分析--http://blog.csdn.net/hnwanghb/archive/2006/01/18/582709.aspx
- ICTCLAS分词系统Java调用接口在Eclipse中的安装 http://blog.csdn.net/CloneIQ/archive/2006/07/20/945909.aspx
- ASP.NET生成静态页面和分页代码 http://blog.csdn.net/zdyguilong/archive/2007/05/24/1624491.aspx
- asp.net中验证码的实现 (转自http://blog.csdn.net/zhoufoxcn/archive/2007/07/19/1698615.aspx)
- 直接调用类成员函数地址(转载自http://blog.csdn.net/shamozhihuzhubohu/archive/2010/07/30/5776979.aspx)