南京网站公司,可以安装两个wordpress,o2o的含义,百度网站怎么做视频播放器很多时候自定义或者引用控件都需要注册才能使用#xff0c;但是如何使要注册的dll或ocx打包到exe中#xff0c;使用户下载以后看到的只是一个exe,点击直接运行呢#xff1f;就像很多安全控件#xff0c;如支付宝的aliedit.exe那样。 现在介绍一种使用资源文件#xff0c;将… 很多时候自定义或者引用控件都需要注册才能使用但是如何使要注册的dll或ocx打包到exe中使用户下载以后看到的只是一个exe,点击直接运行呢就像很多安全控件如支付宝的aliedit.exe那样。 现在介绍一种使用资源文件将dll、ocx打包进exe点击直接注册的例子 首先新建一个工程RegisterFile。 新建文件夹Resource里面添加需要注册的ocx或dll。这里我添加的是dsoframer.ocx并将其文件“属性”中“生成操作”项的值改为“嵌入的资源”。 接下来创建类Register.cs 里面只有一个函数RegisterDll()。 这里为省事我把它放到了Program.cs里同一命名空间下效果是一样的。 [c-sharp] view plaincopy 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()中添加代码 [c-sharp] view plaincopy //需要添加引用 //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的取值为“命名空间” “文件夹” “文件名称”。 转载于:https://www.cnblogs.com/xyqCreator/archive/2012/07/17/2594670.html