古詩詞大全網 - 個性簽名 - 詳細介紹了用C#自動註冊OCX的兩種方法。

詳細介紹了用C#自動註冊OCX的兩種方法。

本文將告訴妳自動註冊DLL庫的兩種方法,包括調用Regsvr方法等。希望這篇文章能幫到妳。

雖然MS為我們提供了豐富的. NET框架庫,為我們的程序C#開發帶來了極大的便利,但是有時候壹些特定功能的控件庫還是需要第三方提供或者自己編寫。當我們需要使用Dll引用時,我們通常會通過添加引用的方式將它們並入到項目中,然後我們就可以像使用自己的類壹樣方便地使用它們了。但是,某些Dll庫(OCX)文件需要在Windows註冊表中註冊,然後才能正常添加和使用。本文介紹了兩種自動註冊Dll庫(OCX)的方法,供大家參考。

首先,我們都知道在Windows的運行中通過輸入Regsvr exe路徑來手動註冊Dll控件(OCX)的方法,說明這種方法給程序的自動部署帶來了很大的不便,所以今天主要介紹如何用C#實現自動註冊

方法1調用Regsvr方法

既然可以在運行欄輸入Regsvr exe路徑進行註冊,那麽在C#程序中肯定可以使用同樣的方法調用Regsvr來實現註冊。

進程p =新進程();

p StartInfo FileName = Regsvr exe

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

//路徑中沒有空格?p Start();這樣,註意添加對命名空間系統診斷的引用。

使用系統診斷;另外,這種方法還有壹個缺點,就是註冊工作是由這個程序之外的Regsvr exe程序完成的,不方便知道註冊結果,也不方便在註冊過程中自定義和控制彈出的對話框。這裏附上Regsvr的參數說明(感謝網友吳華聰的提醒)。

Regsvr exe是壹個在bit系統下使用的DLL註冊和反註冊工具。它必須通過命令行使用。格式是

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

命令可以事先寫在開始→運行文本框或者bat批處理文件中。不帶任何參數的命令是註冊DLL文件的函數,其他參數對應的函數如下。

/u註銷DLL文件;

/s以靜默方式執行命令,即在成功註冊/註銷DLL文件的前提下,不會顯示結果提示框。

/c控制端口;

/i使用/u註銷時調用DllInstall

/n不要調用DllRegisterServer。必須與/i壹起使用。

方法2調用DllRegisterServer函數方法。

既然方法不實用,那就找壹個真正實用的方法來達到目的吧。通過研究Regsvr exe和Dll文件,我們會發現,其實每個需要註冊的文件都包含了壹個DllRegisterServer()方法,Regsvr exe通過調用這個方法來完成Dll的註冊。呵呵,知道了這些,我們可以自己調用DllRegisterServer()來完成註冊過程。

首先,我們必須引入外部方法。

[DllImport( DllTest dll )]?公共靜態extern int DllRegisterServer();//註冊時使用?[DllImport( DllTest dll )]?公共靜態extern int DllUnregisterServer();//取消註冊的時候用下壹個不難。

int I = DllRegisterServer();?如果(i & gt= )

{

//註冊成功!

}

其他

{

//註冊失敗}取消註冊的過程中不應該過賬任何代碼。

這兩種方法都介紹過了,但似乎還缺少什麽?對了,那是Dll是否註冊過的判斷。壹般情況下,我們可以在系統啟動的過程中註冊Dll控件,但是不能每次都註冊吧?這顯然是不合理的,所以我們來判斷當前Dll是否已經註冊,如果已經註冊,跳過註冊過程。

每個Dll的註冊都會在註冊表中記錄關於自身的信息,比如註冊路徑的唯壹ID等等。這裏我們用它留下的唯壹ID號來判斷。

Registry key rk test = Registry classes root open subkey(CLSID \ \ { F A巴德A F FB BD CA B } \ \);

if (rkTest == null){

//Dll未註冊為調用DllRegisterServer () here}註意,應該添加對命名空間Microsoft Win的引用。

使用微軟Win

Lishi Xinzhi/Article/program/net/201311/12168