vs2015+c#实现activex的开发,签名,部署

来源:互联网 发布:zeppelin源码分析 编辑:程序博客网 时间:2024/05/22 00:23

vs2015+c#实现activex的开发,签名,部署

 本人是一名c#软件开发人员,就在最近的一个项目中要用到B/S的网站读取本地的DLL实现读取卡信息的功能,于是就去网上找各种的结解方案,最后找到了用activex插件的方式实现。但是发现网上好多写的都是很早的东西,有很多都不一样了,所以本人在这里总结一不用vs2015去如何的开发activex插件并实现部署。

1创建项目

 使用vs2015创建一个新的解决方案命名为demo,在里面新建项目windows窗体控件如图:

这里写图片描述
然后在引用如下程序集
这里写图片描述
并写不如下接口

    [Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] //GUID这个不需修改,固定的    public interface IObjectSagety    {        void GetInterfacceSafyOptions(System.Int32 riid, out System.Int32 pdwSupportedOptions, out System.Int32 pdwEnabledOptions);        void SetInterfaceSafetyOptions(System.Int32 riid, System.Int32 dwOptionsSetMask, System.Int32 dwEnabledOptions);    }
然后在UserControl1中实   
 public partial class UserControl1 : UserControl, IObjectSagety

实现内容如下

  public void GetInterfacceSafyOptions(int riid, out int pdwSupportedOptions, out int pdwEnabledOptions)        {            pdwSupportedOptions = 1;  //不要修改该代码             pdwEnabledOptions = 2;    //不要修改该代码             return;        }        public void SetInterfaceSafetyOptions(int riid, int dwOptionsSetMask, int dwEnabledOptions)        {            return;        }

然后在里面写个方法

  public string Test()        {            return "ss";        }

然后用工具生成一个GUID并将这个GUID打在Control1的上面
这里写图片描述
这里写图片描述
到了这里基本方法也就建立好了,另外要记住这个GUID,最后就要生成dll了.右键点击项目找到属性
这里写图片描述
使程序集COM可见
这里写图片描述

生成事件中也要进行相应的设置
这里写图片描述
设置完成后就可以点击生成了。

2创建web项目并测试

这里写图片描述
将前一个项目生成的DLL放在这个项目的下面,在webFrom1.aspx里面写下如下代码

 <h1 id="ss">TEST</h1><object id="VisioDisPlay"         classid="clsid:A8E80E90-85ED-43B0-B06E-491A87EC8D2D"           >         </object> <script type="text/javascript">    $("#ss").click(function () {        var object = document.getElementById("VisioDisPlay");        var ss = object.Test();        alert(ss);    })</script>

注意,上面objectId 为上一个dll中用工具生成的guid,
点击运行就可以看到
这里写图片描述
这里写图片描述
看到了这个ss,这个ss正是我们写的方法返回的ss。走到了这里路就走了一半了,接下来就要做安装包了。点击解决方案新建一个打包的项目
这里写图片描述
注:在vs2015里面只有这一个打包工具了。
创建完成后就出现了这个界面
这里写图片描述
点击图中的按钮

这里写图片描述
图中的位置要根据自己的内容填写,这里我就不填了。
这里写图片描述
到这里的时候要加上自己第一个项目生成的dll
这里写图片描述
点击dll右键属性如下图操作

这里写图片描述
接下来的提示窗口的设置。自行百度我这里是这样设置的
这里写图片描述
生成设置完成了之后右键解决方案设置属性将这次叫生成的simpleImage

这里写图片描述

就会有一个exe的文件如下目录。就是结决方案的目录下面
这里写图片描述

到了这一步就可以把web引进的demo1.dll这个文件给删除了,替换成这个exe文件、这里写图片描述

然后就webFrom1.aspx里面的代码修改如下
这里写图片描述
然后进行调试的时候会弹出这个框

这里写图片描述
点击安装后会弹出这个框
这里写图片描述
这是因为没有对exe签名造成的,这个时候有两个结解决办法。
1.降低ie的安全级别
这里写图片描述
然后刷新页面就可以了
这里写图片描述
安装好了,点击test就可以用。但是这样的话要求每个使用我这网页的人都要对IE进行安全设置,当然这个也是非常不爽的,也降低了IE的风险。要怎么解决这个问题呢,就需要用到签名技术了。
2.对于签名技术网上也是一大堆的方案,我用的系统是win10给出一种我认为比较简单的签名技术方案,当然要用到正式的签名的话,就要去申请了,这里我就不在说明了,我这里主要是用到makecert.exe生成签名文件并用signcode.exe对软件进行签名。
第一步。将makecert放在桌面上打开cmd命令,跳到桌面目录如图
这里写图片描述
然后输入如下命令
makecert -r -n “CN=Honor” -b 03/22/2017 -e 02/26/2024 -sv HonorC.pvk HonorC.cer
注: honor可以换成自已的名字。

然后输入密码
这里写图片描述
输入完成后就会出succeeded就说明建好了,再看桌面已经有了
HonorC.pvk HonorC.cer这两个文件
打开HonorC.cer这会发现如下
这里写图片描述

这里面的意思就是要把的这个证书安装到受信任的目录下面点击安装证书选择本地计算机这里一定要注意
这里写图片描述
然后下一步直到导入成功。
最后要对exe进行签名
双击signcode进行签名

这里写图片描述
点击下一步选择自定义
这里写图片描述
下一步
从文件中选择找到
这里写图片描述
点击下一步
这里写图片描述
找到这个
这里写图片描述
点击下一步输入密码,点击下一步选择sha1。默认就是这个。下一步-》下一步-》一直到完成-》点击完成输入密码,
出现在如下图片后就签名完成了。
这里写图片描述

这个时候再看这个exe就会发生不一样的变化了
这里写图片描述
这说明文件已经签名成功了
然后把ie的安全级别调上去,再去运行下网站项目,点击安装就可以安装了并有发布者的安样了,说明就已经签过名了
这里写图片描述

在这个时候就可以发布网站到IIS上面了。至此一个小的案例就已经写完了。时间比较仓促,中间有错字不要误会。另外网上说vs2015就已经带了,makecert.exe 和signcode.exe这两个文件,但是我没有找到,这里我也加个附件上去。方便小伙伴们用。

签名工具链接如下
签名工具

1 0
原创粉丝点击