`

控件注册 - 利用资源文件将dll、ocx打包进exe文件(C#版)

阅读更多

很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样。

      现在介绍一种使用资源文件,将dll、ocx打包进exe,点击直接注册的例子:

      首先,新建一个工程RegisterFile。  新建文件夹Resource,里面添加需要注册的ocx或dll。这里我添加的是dsoframer.ocx,并将其文件“属性”中“生成操作”项的值改为“嵌入的资源”。

     

      接下来,创建类Register.cs   里面只有一个函数RegisterDll()。 这里为省事,我把它放到了Program.cs里,同一命名空间下,效果是一样的。    

      view plaincopy to clipboardprint?
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Windows.Forms;  
 
using System.Diagnostics;  
 
namespace RegisterFile  
{  
    static class Program  
    {  
        /// <summary>  
        /// 应用程序的主入口点。  
        /// </summary>  
        [STAThread]  
        static void Main()  
        {  
            Application.EnableVisualStyles();  
            Application.SetCompatibleTextRenderingDefault(false);  
            Application.Run(new frmMain());  
        }  
    }  
 
 
 
    class Register  
    {  
        public void RegisterDll(string strDll)  
        {  
            Process p = new Process();  
            p.StartInfo.FileName = "Regsvr32.exe";  
 
            p.StartInfo.Arguments = " " + strDll;  
            p.Start();  
 
            p.Close();  
        }  
    }  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

using System.Diagnostics;

namespace RegisterFile
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new frmMain());
        }
    }

 

    class Register
    {
        public void RegisterDll(string strDll)
        {
            Process p = new Process();
            p.StartInfo.FileName = "Regsvr32.exe";

            p.StartInfo.Arguments = " " + strDll;
            p.Start();

            p.Close();
        }
    }
}

     

      最后,在Form1_Load()中添加代码:  

      view plaincopy to clipboardprint?
//需要添加引用  
//using System.IO;  
//using System.Reflection;  
//using System.Resources;          
 
 
        private void Form1_Load(object sender, EventArgs e)  
        {  
            this.Visible = false;  
 
            string strPath = string.Empty;  
            strPath = System.Environment.CurrentDirectory;  
 
 
            Assembly asm = Assembly.GetEntryAssembly();  
            using (Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx"))  
            {  
                int len = (int)stream.Length;  
                byte[] byts = new byte[len];  
 
                stream.Read(byts, 0, len);  
                stream.Close();  
 
                using (FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\dsoframer.ocx", FileMode.Create))  
                {  
                    fs.Write(byts, 0, len);  
                }  
            }  
 
              
 
            Register r = new Register();  
            r.RegisterDll("dsoframer.ocx");  
 
            this.Close();  
        } 
//需要添加引用
//using System.IO;
//using System.Reflection;
//using System.Resources;       


        private void Form1_Load(object sender, EventArgs e)
        {
            this.Visible = false;

            string strPath = string.Empty;
            strPath = System.Environment.CurrentDirectory;


            Assembly asm = Assembly.GetEntryAssembly();
            using (Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx"))
            {
                int len = (int)stream.Length;
                byte[] byts = new byte[len];

                stream.Read(byts, 0, len);
                stream.Close();

                using (FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.System) + "\\dsoframer.ocx", FileMode.Create))
                {
                    fs.Write(byts, 0, len);
                }
            }

           

            Register r = new Register();
            r.RegisterDll("dsoframer.ocx");

            this.Close();
        }

     注意:Stream stream = asm.GetManifestResourceStream("RegisterFile.Resource.dsoframer.ocx")中"RegisterFile.Resource.dsoframer.ocx"的取值为“命名空间”+ “文件夹” + “文件名称”。

还有注册控件VB版。其实VB版才是先写的,后来才做的C#版。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xrongzhen/archive/2010/08/05/5790313.aspx

分享到:
评论

相关推荐

    查看OCX控件DLL依赖关系树的工具

    压缩包子文件中的"DLL依赖查看工具-V1.0"很可能就是这个OCX控件DLL依赖关系查看工具的第一个版本,而"depends22_x64andx86"可能指的是Dependency Walker的一个版本,可能是第22版,并且同时支持64位和32位系统。...

    OCX打包成exe的方法

    以下是一种使用Setup Factory 7.0和IEConfig.exe工具将OCX打包成EXE的方法: 1. **Setup Factory 7.0**: 这是一个强大的安装包制作工具,它可以创建Windows安装程序,包括设置文件、注册表项、依赖库等。首先,你...

    51个VB6 OCX控件 打包

    51个VB6 OCX控件 打包 控件列表: AniGIFV6.ocx asAssistantPopup.ocx asBubbleForm.ocx asctrls.ocx chklsb26.ocx ComboBox.ocx COMCT232.OCX comctl32.ocx COMDLG32.OCX CurtButton.ocx daxctle.ocx DBGRID32.OCX ...

    ComDLL控件OCX免注册工具包,提升管理员权限,注册DLL,卸载OCX-vb6开发的

    1,把工程中引用的DLL,ocx控件文件放到工程目录下的dll_ocx目录进去 2,复制DLL_OCX目录到免注册工具包.exe下面 3,打开”免注册工具包.exe” 4,点2个按钮,生成清单、生成VB6资源文件 5,把目录下生成的:VB6资源...

    32位ocx控件打包cab和exe的方法

    通过"OCX打包EXE方法",我们可以看到这可能是一个教程或工具,指导用户如何将32位OCX控件打包成CAB和EXE文件。如果你有这方面的需要,这个资源可能会非常有用,提供了一种简便的方法来分发和安装你的OCX控件。在使用...

    OCX控件打包成CAB--cab,html文件

    3. 打包控件:将控件的相关文件(如.DLL、.OCX等)以及注册信息放入CAB文件中。这一步通常通过Microsoft的MakeCab工具或者Visual Studio的项目设置来完成。 4. 配置HTML和JavaScript:在HTML页面中,使用`&lt;OBJECT&gt;`...

    将ocx和DLL文件打包成cab文件,实现IE浏览器在线安装

    4. **创建CAB文件**:使用Microsoft的 cabinet工具(如Makecab.exe)或者其他第三方工具,将INF文件和所有相关的OCX、DLL文件打包到一个CAB文件中。确保在INF文件中指定正确的CAB文件名。 5. **部署CAB文件**:将...

    54个VB OCX控件

    anigif6.ocx 动画播放gif文件控件 gif89.dll 又一个播放gif文件的动态链接库 gifPlayer.ocx 又一个播放gif文件控件 flash.ocx 能播放flash动画文件 Digital.ocx 数码显示数字、时间,挺漂亮 MovingChar.ocx ...

    mscomm32.ocx控件的注册及文件

    在分享mscomm32.ocx控件时,我们通常会将其打包在一个压缩文件中,例如本文提到的“MSCOMM32.OCX注册”压缩包。这个压缩包内应包含mscomm32.ocx文件本身以及可能的注册脚本或说明文档,方便用户下载后进行注册操作。...

    SignTool:ocx控件打包成cab

    本篇文章将深入探讨`SignTool`,一个用于数字签名Windows应用程序和组件的工具,以及如何使用它来将OCX(ActiveX控件)打包成CAB( Cabinet)文件,从而简化安装过程。 `SignTool`是微软提供的一个命令行工具,它...

    读卡器dll封装ocx

    7. 示例代码:压缩包中的“读卡器OCX代码”可能包含封装过程中的源码示例,包括DLL的接口声明、OCX控件的属性和方法实现,以及CAB打包的相关脚本。这些代码可以作为学习和参考的素材,帮助开发者理解如何实际操作。 ...

    WEB载入OCX控件教程(VC的OCX教程完整版)

    本教程主要讲述了如何制作OCX控件、将其打包成CAB文件、在WEB页面中加载OCX控件、出错的提示等完整的教程。 1. OCX 制作过程: 在制作OCX控件时,需要使用VS 2008创建一个新的工程,选择“MFC ActiveX控件”。在类...

    VB打包软件-VB-PowerWrap 中文版

    rWrap 允许你将程序所必需的所有 .dll 文件与 .ocx 文件打包到你的 V B 程序内部,并且不需要用户安装,直接就可以运行。并且 VB-PowerWra p 可以自动注册所必需的 .dll 与 .ocx 文件! VB-PowerWrap 通过扫描一个 ...

    Comctl32.ocx、MSCOMCTL.OCX等常用控件打包下载

    本资源提供的控件打包下载包括了一些非常常见的ActiveX控件,这些控件在开发基于Windows的应用程序时经常被用到,特别是在使用Visual Basic 6、VB.NET或者早期版本的Visual Studio时。以下是每个控件的详细介绍: 1...

    vb6.0缺少的控件注册

    2. 安装控件:将控件的安装文件(如OCX或DLL)复制到系统目录,通常是`C:\Windows\System32`(对于64位系统,可能是`C:\Windows\SysWOW64`)。 3. 注册控件:打开命令提示符,以管理员权限运行,然后使用`regsvr32`...

    使用VB必装的几个OCX控件

    安装时,通常需要将控件的DLL或OCX文件复制到系统目录(如C:\Windows\System32),然后在命令行中使用`regsvr32`命令进行注册,例如`regsvr32 BV.ocx`。 2. **其他常见OCX控件**: - **MSComctlLib**: 这个库包含...

    OCX打包CAB并签名过程

    整个OCX打包CAB并签名的过程,涵盖了从准备INF文件、使用iExpress打包,到使用signtool进行签名,再到申请和使用数字证书的全流程,确保了OCX控件在分发和使用过程中的安全性和可靠性。这一系列步骤不仅是技术实践的...

    VS2008(c#)开发ActiveX控件、访问及制作CAB包总结

    在本文中,我们将深入探讨如何使用Visual Studio 2008 (C#) 开发ActiveX控件,以及如何创建和打包CAB文件,以便在网页中使用和更新。ActiveX技术允许开发者创建可以在多种应用程序中使用的组件,尤其是在网页中通过...

    VB6工程支撑文件(OCX,DLL)分析提取工具

    VB6工程文件(.vbp)通常包含源代码、资源、引用的控件(OCX)和动态链接库(DLL)等组件。在开发过程中,为了确保程序在目标计算机上正确运行,开发者需要将所有依赖项一起打包。"VB6工程支撑文件(OCX,DLL)分析提取...

Global site tag (gtag.js) - Google Analytics