當前位置:編程學習大全網 - 源碼下載 - 詳解兩種C#自動實現DLL(OCX)控件註冊的方法

詳解兩種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

  • 上一篇:冷門實用心理學技巧,有趣又漲知識
  • 下一篇:如何才能得到深圳車牌?
  • copyright 2024編程學習大全網