详解两种C#自动实现DLL(OCX)控件注册的方法

作者&投稿:雪湛 (若有异议请与网页底部的电邮联系)
~

  本文将为大家讲述DLL库自动注册的两种方法 包括调用Regsvr 方法等 希望通过本文能对大家有所帮助

  尽管MS为我们提供了丰富的 NET Framework库 我们的程序C#开发带来了极大的便利 但是有时候 一些特定功能的控件库还是需要由第三方提供或是自己编写 当需要用到Dll引用的时候 我们通常会通过 添加引用 的方式将它们纳入到项目中 然后就可以像使用自己的类一样方便的使用它们了 但是 有些Dll库(OCX)文件是需要注册到Windows注册表后才能正常添加和使用的 本文介绍两种为Dll库(OCX)自动注册的方法 为大家提供参考

  首先 大家都知道在Windows的 运行 中 输入 Regsvr exe 路径 这样的方法来手动注册Dll控件(OCX) 显示这种方法对于程序的自动化部署等带来极大的不便 因此 今天我们着重介绍如何用C#实现自动注册

   方法一 调用Regsvr 法

  既然可以在运行栏中输入 Regsvr exe 路径 的方法来注册 那么 一定可以在C#程序中采用同样的方法来调用Regsvr 以实现注册

  Process p = new Process();

  p StartInfo FileName = Regsvr exe ;

  p StartInfo Arguments = /s C:\\DllTest dll ;

  //路径中不能有空格  p Start(); 采用这种方法 注意要添加对命名空间System Diagnostics的引用

  using System Diagnostics; 另外 这种方法有一个不足之处 那就是注册工作是在本程序之外由Regsvr exe程序来完成的 系统内不方便知道注册的结果 也不方便对注册过程弹出的对话框进行自定义和控制 这里附Regsvr 的参数说明 (感谢网友伍华聪的提醒)

  regsvr exe是 位系统下使用的DLL注册和反注册工具 使用它必须通过命令行的方式使用 格式是

  regsvr [/u] [/s] [/n] [/i[:cmdline]] DLL文件名

  命令可以在 开始→运行 的文本框中 也可以事先在bat批处理文档中编写好命令 未带任何参数是注册DLL文件功能 其它参数对应功能如下

  /u 反注册DLL文件;

  /s 安静模式(Silent)执行命令 即在成功注册/反注册DLL文件前提下不显示结果提示框

  /c 控制端口;

  /i 在使用/u反注册时调用DllInstall;

  /n 不调用DllRegisterServer 必须与/i连用

   方法二 调用DllRegisterServer函数法

  既然方法一不大实用 那么我们就来寻找一种真正实用的方法来达到我们的目的吧 研究Regsvr exe和Dll文件 我们会发现 其实每个需要注册的文件都包括一个DllRegisterServer()方法 Regsvr exe就是通过调用该方法来完成Dll的注册的 呵呵 知道了这个 我们就可以自己调用DllRegisterServer()来完成注册过程啦

  首先 还得引入外部方法

  [DllImport( DllTest dll )]  public static extern int DllRegisterServer();//注册时用  [DllImport( DllTest dll )]  public static extern int DllUnregisterServer();//取消注册时用 接下来就不难啦

  int i = DllRegisterServer();  if (i >= )

  {

  //注册成功!

  }

  else

  {

  //注册失败} 取消注册的过程就不应再贴代码啦

  两种方法介绍完啦 可是好像还缺点什么?对了 那就是对Dll是否已经注册过了的判断 一般情况下 我们可以将对Dll控件的注册过程放在系统启动的过程中来完成 但是 总不能每次启动都注册一次吧?这样做显然不合理 那么 我们就来判断一下 当前Dll是否已经注册过 如果已注册过 就跳过注册过程

  每一个Dll的注册都会在注册表里记录下有关它本身的资料 如注册路径 唯一ID等 我们这里就是利用它留下的唯一ID号来判断

  RegistryKey rkTest = Registry ClassesRoot OpenSubKey( CLSID\\{ F A DE BA A F FB BD CA B}\\ );

  if (rkTest == null){

  //Dll没有注册 在这里调用DllRegisterServer()吧} 注意要添加对命名空间Microsoft Win 的引用

  using Microsoft Win ;

lishixinzhi/Article/program/net/201311/12168




如何解释英文字母c的两种发音
c的后面接i,e,y时候用\/si:\/,c的后面接a,o,u,以及辅音时候用\/k\/,但有例外,比方Celt这个词,英国人读k;美国人读s.

c是什么意思在化学中有两种含义:
C在化学中有两种含义:1、表示浓度,单位为mol\/L,计算式为:C=n\/V. C=1000ρω\/M。含义:以1升溶液中所含溶质的摩尔数表示的浓度。以单位体积里所含溶质的物质的量(摩尔数)来表示溶液组成的物理量,叫作该溶质的摩尔浓度,又称该溶质物质的量浓度。溶质含量越多,浓度越大。浓度可以用一定...

高中化学,这题C选项看不太懂求再解释为什么有两种,
C-C-C(省略掉H)这是丙烷的碳链,两头C上的H是一种H,中间C上的H是另一种。所以Cl取代两头上的H是一种,取代中间C上的H是另一种,所以有两种同分异构体。

化学第八题,AC选项搞不懂,怎么c会有两种同分异构体?
因为有两个Cl,可以分给同一个C或者每一个C分一个,所以有两种情况 而C2H6的话就没有第二种情况了。

解方程|C-4|=|C+2| 这类方程怎么解?分哪两种情况?
1 前为正 ,c大于等于4,后也为 正,c大于等于-2,大于更大的,c大于等于4,解得 c=3 小于4 舍掉 2 前为正 ,c大于等于4,后为 负时,c小于-2,同时满足,没有结果,舍掉 3 前为负,则c 小于 4, 后也为负时,c小于-2 ,所以, 小于更小 ,c小于 -...

关于C语言中除法的两种形式
在C语言的世界里,除法运算分为两种独特的形式,它们各自处理整数和浮点数的运算规则,为我们提供了丰富的计算手段。形式一:整除运算(\/)<\/当我们看到像 2\/3 这样的表达式时,这是在进行整数除法。这种运算遵循的是整数规则,结果仅保留整数部分,摒弃小数。这就像求余数的过程,但关键在于结果的处理。

过去和未来的对拼,奔驰C级两种发动机详解对比
奔驰c 2.0T汽油发动机详解 型号:264 920 参数:最大功率190kW(6100rpm),最大马力258Ps,最大扭矩370N 、米(1800-4000转\/分)年份车型:2020款和2019款。车型: 奔驰E级 发动机的技术特征 圆锥形气缸:这种气缸设计称为圆锥形技术,即气缸上止点的气缸直径略小于下止点的气缸直径,这样当活塞移动到...

c语言函数从形式上分为哪两种
一种是用户自定义函数,就是自己根据功能的需要自己编写的函数;另一种是系统自带的函数,如sqrt(x)函数 (就是求x的二次方根),这样的可以直接用,前提是得在头文件中把它们包含进去。在编程领域中,C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势。计算机...

2b和2c的商业模式是什么意思?
答案:商业模式中的“2b”和“2c”是指两种不同的业务模式。“2b”指的是面向企业的商业模式,而“2c”则是面向终端消费者的商业模式。解释:1. 面向企业的商业模式:在这种模式下,企业主要关注其他企业或组织的需求,为其提供产品或服务。这种模式强调与企业间的合作与整合,包括企业级的市场调研、...

c语言用两种方法求两个整数的最大公约数,辗转相除法除外
回答:可以分解质因数

建昌县13281882143: 如何用C#实现自动注册DLL文件 -
支罡乳癖: 用C#做成的DLL是一种“伪DLL",不能通过regsvr32进行注册,如果你要在其他的.NET项目中使用该DLL,只要在项目中进行引用就可以了.

建昌县13281882143: C#中如何生成一个dll文件 -
支罡乳癖: 新建项目的时候,选择项目类型为 “类库”, 或者在已经建好的项目属性中,修改项目类型为“类库”.

建昌县13281882143: 如何用C#创建一个简单的DLL文件 -
支罡乳癖: 1.打开vs2008选择文件———》》项目————》》类库. 2.把东西写进类里点生成,就会会生成.dll文件引用就行了.

建昌县13281882143: C#中如何使用动态生成DLL
支罡乳癖: 1.添加引用 右击项目-添加引用-浏览 找到本地的dll文件 2.using 该dll文件里面代码的名称空间 然后就可以调用dll文件里面的类和方法

建昌县13281882143: 请问C#中如何生成.dll文件? -
支罡乳癖: 项目上点右键- 编译/生成/重新生成都可以,会生成Dll文件的.一般的会在Bin 或是 Debug 或是 Release下,这个时候生成的目录,可以设置的,最开始系统也会有一个默认的路径. 一般的,有一个解决方案有两个项目以上时会生成dll文件(有项目间的引用),其他就是项目里也引用了其他的Dll文件,编译以后也会生成出来.

建昌县13281882143: 哪位能给我一个c#调用系统dll函数的例子? -
支罡乳癖: 下面是MSDN上的一个例子,关键字DllImport using System; using System.Runtime.InteropServices; class MainClass { [DllImport("User32.dll")] public static extern int MessageBox(int h, string m, string c, int type); static int Main(){ string ...

建昌县13281882143: 我用C#开发了一个ActiveX控件,怎么生成.ocx文件? -
支罡乳癖: ActiveX控件文件有三种格式:1).ocx 2).exe 3).dll 用C#开发的ActivX控件,只能实现后两种格式.后两种格式的ActiveX控件与.ocx格式的使用注册方法完全一样,即 regsvr32 xxxx.exe 或 regsvr32 xxxx.dll

建昌县13281882143: c#中.dll文件生成 -
支罡乳癖: 新建项目选择类库,编译后在Debug/Release文件夹下面就生成了dll文件,一般一个项目按照三层思想进行开发时,数据访问层,业务逻辑层,实体层,都生成为dll文件,供UI层进行调用.还有一些公共的访问类,可以生成dll文件以供分享和分发.希望能帮到你!

建昌县13281882143: c#可以怎么把一个c的方法 封装成dll -
支罡乳癖: 1> 对C的方法创建标准c/c++ dll项目 声明dllexport 然后编译成标准c++ dll2> 在C#中使用DllImportAttribute声明extern方法 并指向上一步生成的dll路径 这要求C#函数和C函数的函数声明完全一致3 > 把C#声明的方法放到类中 独立编译成.net的dll 就可以被其他.net程序调用了

建昌县13281882143: C#如何编写并调用DLL
支罡乳癖: 在新建项目的地方选择类库, 然后会有一个Class1.cs文件. 内容改为:namespace ClassLibrary1{ public class Class1 { public string M() { return "String"; //返回字符串"String" } }}然后生成该类库, 在.../bin/debug或.../bin/release下得到*.dll...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网