.bat文件註冊.ocx+win8開機獲得管理員權限+運行程序自動註冊.ocx

本文主要是針對做的項目遇到的問題寫的東西。


此項目是基於VS2010開發,C++編寫算法部分,界面部分爲C#,這就需要將C++的部分做成ActiveX控件,拖到C#界面中。我們知道,ActiveX控件形式基本爲.dll文件與.ocx文件。這樣的文件若想被C#調用前提是要在本地註冊。


問題是,之前師兄開發是用的WIN7 32位的,這沒有任何問題,我接管這個項目之後,我的電腦爲WIN8 64位系統,註冊.ocx問題就出現了。


1、如何在WIN8系統中註冊.ocx文件


這個比較坑,網上一般教程針對的是一個獨立的.ocx註冊。即只需要將.ocx拷貝到系統目錄C:\Windows\System32(64位)、或者是C:\Windows\SysWOW64(32位)。然後在此路徑中找到cmd.exe,以管理員的身份運行,註冊即可。


然而,很多.ocx文件不是孤立的,它還依賴很多.lib庫,如果把這些.lib文件也拷過去註冊,當然沒問題。但是每次都這樣很麻煩。所以就想可不可以不把.ocx拷貝到系統目錄直接註冊。答案可行,具體操作過程:

(1)、在C:\Windows\SysWOW64文件夾下,找到cmd.exe,右鍵以管理員身份運行。


進入.ocx所在的文件夾:


用regsvr32註冊.ocx控件


這樣就註冊成功了。

2、編寫.bat自行運行註冊.ocx。

但是這樣的結果就是,如果.ocx是你自己正在開發的,你一直在修改它,每次調試,你都得要重新手動註冊一次,相當麻煩,而且是要運行cmd命令註冊。這樣就可以轉到使用.bat自行註冊。使用.bat註冊需要編寫.bat。先建一個.txt,然後改後綴名,右鍵編輯。貼入代碼:

@echo off
cd /d %~dp0  
if "%processor_architecture%"=="x86" goto REG32  
if "%processor_architecture%"=="AMD64" goto REG64  
:REG32  
regsvr32 "Med-Image Analyzer.ocx"   
goto exit  
:REG64
regsvr32 "Med-Image Analyzer.ocx"    
goto exit  
:exit  

把.bat文件放在.ocx所在目錄,好了,我們不需要每次都運行cmd註冊了,可是問題又出來,每次編譯工程都會報錯。報錯內容是:


淚崩,以我調試的經驗教訓,出現註冊失敗基本是因爲權限不夠,就是說,雖然我運行了.bat註冊,但是不是以管理員身份運行的。所以我需要再以管理員身份運行.bat才能成功。也是醉了。換句話說我還是沒有實現全自動註冊.ocx而不出現錯誤。

3、WIN8系統開機即獲得管理員權限。

既然我不是以管理員身份運行的.bat,那麼我每次編譯工程的時候如果.bat可以自動獲得管理員權限問題就可以解決了。

由此我聯想到之前師兄在WIN7 32位系統下也不需要每次手動運行.bat。網上查了相關資料。可以使WIN8系統開機獲得管理員權限。

WIN+R輸入gpedit.msc進入本地組策略管理器。


然後,計算機配置-》Windows設置-》安全設置-》本地策略-》安全選項,找到對應的“用戶賬戶控制:以管理員批准模式運行所有管理員”將其禁用,重啓計算機即可。


4、.bat獲得權限了,可能還會出現剛纔的問題,沒註冊成功,這就需要對工程屬性設置了。

找到屬性頁。在鏈接項中看到兩個選項,一個是Register out ,設爲YES,一個是Per-user Redirection.設爲NO。



5、再編譯工程,沒有錯誤,大功告成。

發佈了37 篇原創文章 · 獲贊 19 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章