[WIN][IIS7]Win2008R2 64bit & IIS7 & VB6 DLL 32bit 如何運作正常

  • 7959
  • 0

[WIN][IIS7]Win2008R2 64bit & IIS7 & VB6 DLL 32bit 如何運作正常

工作上遇到,必需把vb6制成的dll放入Win2008R2 64bit 中運行在IIS7+ASP上,

但總是無法正常運作,而在搜尋各解答過程中,

總是沒有一個完整的解決辦法,所以特此記錄完整的解決辦法,

首先如何使註冊一個 32bitDLL 至 Win2008R2 64bit,

步驟1.先把 DLL copy 至 C:\Windows\SysWOW64 底下

步驟2.切換目錄至 C:\Users\Administrator>cd c:\windows\syswow64

步驟3.註冊DLL C:\Windows\SysWOW64>regsvr32 YOUR_DLL.dll

以上就完成了,不過要注意的是要用『管理者模式』才能註冊成功,

接下來就要驗証註冊是否成功(客戶常常會問這句話),

先開啟 regedit,

查看 電腦 \HKEY_CLASSES_ROOT\YOUR_DLL.FUNCTION_NAME是否存在,

如此確認OK,基本上完成 DLL在Win2008R2上的註冊;

 

接下來就是IIS的設定,

現行大致上會分兩個版本IIS6與IIS7

而 IIS6 M$已有完整的解法http://support.microsoft.com/kb/894435/zh-tw

只要執行

cscript %SYSTEMDRIVE%\inetpub\adminscripts\adsutil.vbs SET W3SVC/AppPools/Enable32bitAppOnWin64 1

就可以變更執行的環境,

不過要記住IIS6只能執行單一模式,也就是不是32bit就是64bit,

而到了IIS7就有操作畫面可以使用,

可直接至 [IIS管理員]\[應用程式集區]\[進階設定] ,

查看[啟用32位元應用程式]值是否為[True]

或是執行

%windir%\system32\inetsrv\appcmdset config -section:applicationPools-applicationPoolDefaults.enable32BitAppOnWin64:true

也可以達到同樣的效果。

 

config2

config1 

 

參考網站:

http://social.msdn.microsoft.com/Forums/zh-HK/236/thread/194a19a7-dcc3-4949-b26b-4d879f7180c0

http://support.microsoft.com/kb/894435/zh-tw

http://www.dotblogs.com.tw/yangxinde/archive/2010/10/14/18330.aspx

http://www.dotblogs.com.tw/remhom/archive/2009/04/21/8074.aspx

http://msdn.microsoft.com/zh-tw/windows/gg537085