C++程式註冊Dll

來源:互聯網
上載者:User

前兩天寫個程式,引用的dll首次啟動並執行時候,需要手動註冊(貌似是個activex dll)。於是想個辦法,用C++程式實現。

註冊要在dos視窗中,那麼是不是要在程式中用shellexcute執行命令列(使用方法見我的博文)。

看了很多資料,發現,shellexcute只能執行一個命令(開啟檔案,運行某個應用程式等)。

接著就找到寫bat檔案的方法:

@echo offregsvr32.exe E:\VC.dllpause

路徑是絕對路徑,那麼如何獲得的呢?

找到目錄有三種方法:

char *p; char s[101];p=s;//HMODULE hDLL = NULL;//hDLL=LoadLibrary("VC.dll");//GetModuleFileName的首參,NULL代表不報任何錯誤GetModuleFileName(NULL,p,100);//方法1得到運行程式(exe)的全路徑getcwd(p,100);//方法2,工程檔案目錄cout<<argv[0]<<endl;//方法3,(同方法1)

本程式顯然要用方法2.

接著就是寫進bat檔案了。

fstream _file;_file.open("t.bat",ios::in);if(!_file){char *p; char s[101];p=s;getcwd(p,100);string str;str="";str+="@echo off";fprintf(pfOutput, "%s\n",str.c_str());str="";str+="regsvr32.exe ";str+=p;str+="\\";str+="VC.dll";fprintf(pfOutput, "%s\n",str.c_str());str="";str+="pause";fprintf(pfOutput, "%s\n",str.c_str());fclose(pfOutput);}


寫好bat檔案就要在程式中執行了。執行方法有很多種。列出兩個:

ShellExecute(NULL,"open","t.bat",NULL,NULL,SW_SHOWNORMAL);//最後一個參是正常顯示表單system("t.bat");//方法2

這些寫好後,就可以直接註冊dll啦。

 註冊dll命令:

Regsvr32命令是Windows中控制項檔案(如副檔名為DLL、OCX、CPL的檔案)的註冊和反註冊工具。命令格式  Regsvr32  [/s]   [/n]  [/i[:cmdline]]  dllname  /u 卸載安裝的控制項,卸載伺服器註冊 /s 註冊成功後不顯示操作成功資訊框;  /i 調用DllInstall函數並把選擇性參數[cmdline]傳給它,當使用/u時用來卸載DLL;不調用DllRegisterServer,該參數必須和/i一起使用。

關於一些註冊命令(DOS視窗下):

註冊所有dll命令:

for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.