丁安裝全攻略:老項(xiàng)目遷移Windows 11的避坑指南)
簡介VB6.0 SP6是Visual Basic 6.0最后一個(gè)重大服務(wù)包面向仍在使用VB6進(jìn)行桌面應(yīng)用開發(fā)的工程師用于修復(fù)歷史遺留漏洞、強(qiáng)化安全機(jī)制、提升性能與系統(tǒng)兼容性保障舊程序在新環(huán)境穩(wěn)定運(yùn)行。自RTM以來發(fā)現(xiàn)的大量缺陷均在此集中處理同時(shí)更新了控件庫與開發(fā)者文檔。壓縮包內(nèi)共69個(gè)文件以32個(gè)cab安裝組件、6個(gè)dll運(yùn)行庫、2個(gè)ocx控件及exe安裝程序?yàn)橹髁砗f明文檔和升級清單整體約26.39MB目錄結(jié)構(gòu)簡潔便于選擇部署。目前已有766人學(xué)習(xí)下載適合需要維護(hù)或遷移VB6項(xiàng)目、希望在較新Windows環(huán)境繼續(xù)開發(fā)的中高級開發(fā)者。通過本包可一次性獲取官方SP6組件、腳本運(yùn)行庫、控件更新與完整安裝說明既能完成環(huán)境升級又能規(guī)避常見兼容問題減少逐一搜集補(bǔ)丁的時(shí)間成本是繼續(xù)使用VB6做好項(xiàng)目交付的重要保障。1. VB6.0 SP6 補(bǔ)丁老項(xiàng)目遷移時(shí)最容易被漏掉的最后一環(huán)前陣子幫同事遷移一個(gè)“年紀(jì)比部分程序員還大”的 VB6 采購系統(tǒng)原機(jī)還是 Windows XP新機(jī)是 Windows 11 64 位。我也沒多想把原來的 VB6 安裝盤拷出來裝完啟動(dòng) VB6.exe結(jié)果 IDE 彈了個(gè)“運(yùn)行時(shí)錯(cuò)誤 372”項(xiàng)目連窗體都打不開。折騰了一下午才想起來這臺機(jī)器裝完的是原版 VB6沒打 VB6.0 SP6 補(bǔ)丁。補(bǔ)丁一上再把常用 ActiveX 控件重新注冊了一遍老工程居然在新系統(tǒng)里老老實(shí)實(shí)跑起來了。VB6.0 SP6 補(bǔ)丁是 VB6 的最后一個(gè)官方服務(wù)包后面不再有 SP7。它在老環(huán)境里屬于“不裝也能寫代碼一碰真實(shí)工程就翻車”的那種關(guān)鍵存在。很多從老機(jī)器拷過來的 IDE 目錄、綠色版、精簡版裝完看似能用但編譯報(bào)錯(cuò)、控件加載失敗、運(yùn)行庫不全十有八九都是因?yàn)槿鄙龠@個(gè)補(bǔ)丁。這篇不聊 VB6 語法就講清楚 VB6.0 SP6 補(bǔ)丁怎么安裝、怎么配置、裝完怎么驗(yàn)證適合還在維護(hù) VB6 老系統(tǒng)、或者需要在新電腦上還原老開發(fā)環(huán)境的開發(fā)者。2. 裝前摸底先把 SP6 的版本關(guān)系和安裝前提搞清楚2.1 區(qū)分三個(gè)容易混淆的東西SP6 補(bǔ)丁、SP6 運(yùn)行庫、累積更新很多人在搜索框里輸入“vb6.0 sp6 補(bǔ)丁”結(jié)果拿到手的是三種完全不同的文件名字都差不多但用途不一樣。SP6 補(bǔ)丁作用是更新 VB6 這個(gè) IDE 本身包括 VB6.EXE、vba6.dll、部分 ActiveX 控件以及工程模型相關(guān)的組件。裝完之后IDE 的穩(wěn)定性、對老工程的兼容性都會有提升。SP6 運(yùn)行庫核心文件是 msvbvm60.dllVB6 編譯出的 EXE 運(yùn)行時(shí)要依賴它。它主要負(fù)責(zé)讓 EXE 在目標(biāo)機(jī)器上跑起來跟 IDE 好不好用沒有直接關(guān)系。累積更新SP6 之后還有一些針對 VB6 的累積更新補(bǔ)丁主要修 IDE 和部分控件的邊角問題。如果手頭只有 SP6大多數(shù)老工程都能跑能再找到累積更新就補(bǔ)上找不到也不用卡在這一步。這三個(gè)東西我在實(shí)際部署時(shí)的取舍是開發(fā)機(jī)必須裝 SP6 補(bǔ)丁最后還要確認(rèn) msvbvm60.dll 的版本發(fā)布機(jī)器如果沒有裝過 VB6只需要帶運(yùn)行庫和工程用到的控件不需要裝完整 IDE。文件類型主要作用安裝場景關(guān)鍵驗(yàn)證點(diǎn)SP6 補(bǔ)丁更新 IDE、控件、調(diào)試器開發(fā)機(jī)裝完 VB6 后立刻安裝VB6.EXE 不再報(bào)錯(cuò)能打開工程SP6 運(yùn)行庫供 VB6 編譯出來的 EXE 運(yùn)行目標(biāo)機(jī)器或發(fā)布目錄msvbvm60.dll 版本為 6.00.9782累積更新修補(bǔ) SP6 之后的零星問題有舊工程兼容問題時(shí)補(bǔ)裝原有問題是否消失易混淆的點(diǎn)在于裝了 SP6 補(bǔ)丁不等于你的發(fā)布目錄就自動(dòng)帶運(yùn)行庫。這點(diǎn)后面第 4 章會展開。2.2 環(huán)境檢查先確認(rèn)系統(tǒng)位數(shù)、權(quán)限和舊程序殘留VB6 是 32 位時(shí)代的產(chǎn)物。在 64 位 Windows 10、Windows 11 上安裝時(shí)系統(tǒng)位數(shù)會影響文件到底落在哪個(gè)目錄也會影響后續(xù)注冊控件的命令。先跑一條 PowerShell確認(rèn)系統(tǒng)類型和管理員權(quán)限Get-CimInstance Win32_OperatingSystem | Select-Object Caption, OSArchitecture這條命令取的是操作系統(tǒng)名稱和架構(gòu)信息。如果 OSArchitecture 顯示 64 位那后續(xù)檢查 32 位控件就要去C:\Windows\SysWOW64目錄而不是C:\Windows\System32。注意64 位系統(tǒng)里的 32 位文件被放在 SysWOW64這是 VB6 環(huán)境最容易踩坑的地方。管理權(quán)限也要確認(rèn)。用普通用戶雙擊安裝盤很多時(shí)候裝到一半就停在“正在更新系統(tǒng)”。右鍵 PowerShell 選擇“以管理員身份運(yùn)行”輸入whoami /groups看輸出里有沒有“管理員”標(biāo)識。沒有管理員后面注冊控件、修改注冊表都做不了。還要檢查舊環(huán)境殘留。如果機(jī)器上以前裝過精簡版、綠色版 VB6或者有多個(gè)時(shí)間的 VB98 目錄建議先把這些清干凈。我一般會在安裝前搜索根目錄下所有 VB6.EXE避免補(bǔ)丁打到舊目錄上Get-ChildItem -Path C:\Program Files (x86),C:\Program Files -Filter VB6.EXE -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1 -ExpandProperty FullName這條命令會同時(shí)搜索兩個(gè) Program Files 目錄下的 VB6.EXE。第一次跑可能比較慢但能找到真正要用的 IDE 路徑。如果搜索出多個(gè)結(jié)果優(yōu)先保留自己安裝盤裝出來的那個(gè)其余先改擴(kuò)展名或移到備份目錄。2.3 安裝介質(zhì)和順序先主程序、后補(bǔ)丁、再運(yùn)行庫安裝順序我建議固定成VB6 主程序 - SP6 補(bǔ)丁 - 運(yùn)行庫目標(biāo)機(jī)器缺失時(shí) - 控件注冊。如果順序倒過來先打補(bǔ)丁再裝主程序補(bǔ)丁會找不到安裝源或者把文件版本改亂最后 IDE 還是舊版本。關(guān)于安裝介質(zhì)不要直接從 ISO 鏡像里雙擊運(yùn)行安裝程序。VB6 的安裝器是老式 setup.exe對“當(dāng)前目錄”和“可寫磁盤”很敏感。我會把 ISO 或者光盤里的整個(gè)安裝目錄復(fù)制到本地磁盤例如C:\VB6Setup再在本地運(yùn)行。這樣做有兩個(gè)好處一是安裝過程中即使要換盤或讀取附加組件源文件就在本機(jī)二是兼容模式對本地文件的控制更穩(wěn)定。提示如果你是在一臺已經(jīng)裝了 VB6 SP5 的機(jī)器上補(bǔ)裝可以直接跑 SP6不用重裝主程序。但如果是從老機(jī)器整個(gè)拷貝 VB98 目錄過來那這是綠色目錄SP6 補(bǔ)丁不認(rèn)路徑別指望它能幫你救活。3. 正式安裝從 VB6 主程序到 SP6 補(bǔ)丁的完整落地步驟3.1 主程序安裝兼容模式與本地目錄一起解決新裝 VB6 第一步不是雙擊 setup.exe而是先設(shè)置兼容模式。在復(fù)制的安裝目錄里找到 setup.exe右鍵 - 屬性 - 兼容性勾選“以兼容模式運(yùn)行這個(gè)程序”下拉選“Windows 7”。Windows 11 上如果還卡再試“Windows XP (Service Pack 3)”?!耙怨芾韱T身份運(yùn)行”這個(gè)復(fù)選框也一并勾上。我一般會在備注里寫下這樣一段“Windows 10/11 上 VB6 安裝器默認(rèn)以 16 位安裝引擎方式啟動(dòng)系統(tǒng)會直接拒絕兼容模式本質(zhì)上是讓老安裝器以為自己在舊系統(tǒng)里運(yùn)行?!奔嫒菽J皆O(shè)置好之后直接運(yùn)行 setup.exe。如果安裝盤要求輸入序列號按光盤或鏡像附帶的說明輸入。安裝類型我選“自定義安裝”不選典型安裝也不選最小安裝。最小安裝會漏掉不少 ActiveX 設(shè)計(jì)器典型安裝又會把 MSDN 幫助文檔這種“大塊頭”塞進(jìn)去磁盤占用大且對老項(xiàng)目沒太多實(shí)際幫助。在自定義安裝的組件列表里數(shù)據(jù)訪問相關(guān)組件必須保留尤其 ADO、Data Environment、Data Report。老工程十個(gè)里有九個(gè)掛著 ADODB 引用少了這些打開窗體時(shí)滿屏都是“未找到工程或庫”。MSDN 幫助文檔的勾可以去掉VB6 的 IDE 菜單里那個(gè)“幫助”按鈕留著但不影響使用。主程序裝完先別急著打補(bǔ)丁。首次啟動(dòng) VB6.EXE 一次讓它生成注冊表項(xiàng)和用戶配置。這一步很多人跳過結(jié)果打完 SP6 后 VB6.EXE 還是報(bào)錯(cuò)實(shí)際是主安裝本身已經(jīng)殘了。3.2 安裝完成后確認(rèn) VB6.EXE 能找到先確認(rèn) VB6.EXE 到底在哪個(gè)路徑。用 2.2 里的搜索命令找找到后用 PowerShell 查一下它的版本$vb6 C:\Program Files (x86)\Visual Studio\VB98\VB6.EXE if (Test-Path $vb6) { (Get-Item $vb6).VersionInfo | Select-Object FileVersion, ProductVersion }這條命令里的$vb6路徑是我這里的例子不用照抄改成你自己機(jī)器上實(shí)際找到的路徑。Test-Path判斷文件是否存在存在就把 FileVersion 和 ProductVersion 打印出來。這一步的目的是留一個(gè)“補(bǔ)丁前的版本底稿”。裝完 SP6 后如果文件版本沒變化說明補(bǔ)丁沒生效不用白折騰。如果首次啟動(dòng) VB6.EXE 時(shí)彈錯(cuò)誤框先看錯(cuò)誤是“無法定位程序輸入點(diǎn)”還是“ActiveX 部件不能創(chuàng)建對象”。前一種通常是系統(tǒng)里有新版本系統(tǒng) DLL 和老 VB6 組件沖突后一種是 ActiveX 控件沒注冊。這些暫時(shí)先不管等 SP6 補(bǔ)丁和控件注冊完成后再看。只要 IDE 主窗口能彈出來第 3.1 步就算通過。3.3 應(yīng)用 SP6 補(bǔ)丁右鍵管理員 等待 setup 完成SP6 補(bǔ)丁的文件名很多地方叫Vb6sp6.exe也有叫VB6.0ServicePack6.exe的認(rèn)準(zhǔn)補(bǔ)丁內(nèi)容即可。運(yùn)行之前先關(guān)掉 VB6 IDE否則 VB6.EXE、vba6.dll 等文件被 IDE 占用補(bǔ)丁寫入時(shí)會報(bào)“文件正在使用”。運(yùn)行補(bǔ)丁同樣要右鍵“以管理員身份運(yùn)行”。如果直接雙擊沒反應(yīng)先設(shè)置兼容模式仍然以“Windows 7”優(yōu)先其次是“Windows XP SP3”。這一步我遇到最多的問題是補(bǔ)丁解壓完就消失界面都沒彈出來。原因往往是殺毒軟件把老版自解壓程序當(dāng)成可疑行為解決辦法是暫時(shí)退出實(shí)時(shí)防護(hù)裝完重啟再打開。補(bǔ)丁安裝過程跟主程序很像一路下一步即可一般不需要改安裝路徑。它會自動(dòng)找注冊表里 VB6 的安裝位置。如果它提示“找不到安裝目錄”先別急著換補(bǔ)丁文件重點(diǎn)檢查兩點(diǎn)一是 VB6 主程序是否真的通過 setup.exe 安裝過二是系統(tǒng)里是否存在多套 VB98 目錄。綠色版注冊表信息不完整補(bǔ)丁找不到目標(biāo)這是正常現(xiàn)象。裝完補(bǔ)丁建議重啟一次不是因?yàn)樗笾貑⒍遣糠?ActiveX 控件要在系統(tǒng)啟動(dòng)時(shí)重新注冊。省這一步后面打開工程時(shí)容易遇到“對象庫未注冊”的玄學(xué)報(bào)錯(cuò)。3.4 補(bǔ)丁后的版本核對用文件版本確認(rèn) SP6 真的進(jìn)去了補(bǔ)丁裝完不能只看“安裝成功”的提示。我見過安裝器明明提示成功但 msvbvm60.dll 還是舊版本的機(jī)器。所以我會用一條 PowerShell 腳本做硬性核對$rt C:\Windows\SysWOW64\msvbvm60.dll if (Test-Path $rt) { $v (Get-Item $rt).VersionInfo.FileVersion Write-Host msvbvm60.dll FileVersion $v if ($v -eq 6.00.9782) { Write-Host 運(yùn)行庫已到 SP6 標(biāo)準(zhǔn)版本 } else { Write-Host 版本不是 6.00.9782補(bǔ)丁可能沒生效 } } else { Write-Host 找不到 msvbvm60.dll請先安裝 SP6 運(yùn)行庫 }很多資料里把 SP6 運(yùn)行庫版本寫成 6.0.97.82Windows 文件屬性里顯示為 6.00.9782其實(shí)是同一個(gè)版本號的兩套寫法。FileVersion屬性拿到的是后者所以判斷值寫的是6.00.9782。如果到了這一步顯示版本不符那就回去重新跑 SP6 補(bǔ)丁。不用重裝整個(gè) VB6只要 IDE 本身還能打開補(bǔ)丁覆蓋安裝基本都能糾正。另外也要順手看一下 VB6.EXE 的版本如果主程序文件版本比補(bǔ)丁前還低大概率是安裝目錄選錯(cuò)了。4. VB6 SP6 補(bǔ)丁安裝與使用排查常見的 5 個(gè)翻車現(xiàn)場4.1 補(bǔ)丁安裝器卡在“正在提取文件”進(jìn)度條一直不動(dòng)現(xiàn)象雙擊 VB6.0 SP6 補(bǔ)丁解壓窗口彈出來文件解到一半就停在原地CPU 占用不高但界面沒反應(yīng)。原因老補(bǔ)丁的自解壓邏輯依賴臨時(shí)目錄%TEMP%。如果你的 TEMP 被設(shè)置到了非 C 盤、中文目錄或者當(dāng)前系統(tǒng)權(quán)限不足解壓進(jìn)程就一直在等待寫入權(quán)限界面形成“假死”。解決先檢查環(huán)境變量 TEMP 和 TMP把它們改成C:\Windows\Temp并賦予當(dāng)前用戶寫權(quán)限然后重新運(yùn)行補(bǔ)丁。更簡單的做法是把補(bǔ)丁復(fù)制到C:\Vb6Patch這個(gè)不含中文和空格的一級目錄下再運(yùn)行。我一般還會在兼容模式里選“Windows XP SP3”因?yàn)槟承?SP6 補(bǔ)丁對 Win7 兼容模式的適配反而不如 XP。提示不要因?yàn)榻缑婵ㄗ【蛷?qiáng)行結(jié)束進(jìn)程否則容易留下半解壓的臨時(shí)文件。下次運(yùn)行補(bǔ)丁前把%TEMP%下形如Vb6sp6開頭的殘留目錄刪掉。4.2 裝完 SP6 還是找不到 ActiveX 控件現(xiàn)象打開老工程時(shí)彈“未找到 MSADODC.OCX”或“無法加載 MSCOMCTL.OCX”IDE 顯示一個(gè)空窗體控件全部丟失。原因SP6 補(bǔ)丁只負(fù)責(zé)更新文件版本不會替你把每個(gè) ActiveX 控件都注冊一遍。尤其 64 位系統(tǒng)下32 位 OCX 放在C:\Windows\SysWOW64而系統(tǒng)默認(rèn)調(diào)用的是 64 位注冊工具路徑和注冊表都錯(cuò)位控件自然加載失敗。解決以管理員身份打開命令提示符使用 32 位注冊工具重新注冊常用控件。這類控件的注冊命令我現(xiàn)在基本是固定套路C:\Windows\SysWOW64\regsvr32.exe /s C:\Windows\SysWOW64\MSCOMCTL.OCX C:\Windows\SysWOW64\regsvr32.exe /s C:\Windows\SysWOW64\MSADODC.OCX C:\Windows\SysWOW64\regsvr32.exe /s C:\Windows\SysWOW64\MSCOMM32.OCX C:\Windows\SysWOW64\regsvr32.exe /s C:\Windows\SysWOW64\TABCTL32.OCX命令里的/s是靜默模式不彈成功對話框文件路徑寫成絕對路徑避免 64 位命令提示符把路徑重定向到 System32 目錄。如果提示找不到某個(gè) OCX先到原來 VB6 安裝盤的Common\Tools\VB\Controls目錄里找找不到再考慮從同版本工程機(jī)器拷貝。4.3 一打開 VB6 就報(bào)“運(yùn)行時(shí)錯(cuò)誤 372”現(xiàn)象VB6.EXE 能啟動(dòng)但打開工程時(shí)彈run-time error 372 failed to load control SysTabCtl32。原因錯(cuò)誤 372 是典型的 ActiveX 控件加載失敗。SysTabCtl32 屬于 VB6 的 Common Controls 系列SP6 補(bǔ)丁更新過這批控件但在新系統(tǒng)上重新注冊可能沒被系統(tǒng)接受。常見原因是舊版控件文件和系統(tǒng) DLL 混用。解決先把工程引用到的控件版本理清然后用 32 位 regsvr32 逐個(gè)注冊。如果同一系統(tǒng)里裝過多個(gè)版本的 VB6 控件優(yōu)先保留版本號高的那個(gè)。我一般會先執(zhí)行一次 4.2 里的注冊腳本再重啟 VB6。若仍然報(bào) 372就把 SysTabCtl32.OCX 從安裝盤重新拷貝到 SysWOW64覆蓋舊文件后再注冊。這里還要提醒一句網(wǎng)上不少“修復(fù) 372”的腳本會順手把所有 OCX 都注冊一遍這種方式有時(shí)反而會把控件的依賴關(guān)系搞亂。正確做法是先看報(bào)錯(cuò)名稱只注冊報(bào)錯(cuò)那一個(gè)再測一次逐步加。4.4 編譯出來的 EXE 到新電腦上提示找不到運(yùn)行庫現(xiàn)象開發(fā)機(jī)上編譯好的 VB6 程序拷貝到一臺沒有裝過 VB6 的電腦上運(yùn)行后提示找不到 MSVBVM60.DLL或者干脆直接閃退。原因VB6 編譯出的 EXE 不會把運(yùn)行庫內(nèi)嵌進(jìn)去SP6 補(bǔ)丁只影響開發(fā)機(jī)不會自動(dòng)幫你把 msvbvm60.dll 放進(jìn)發(fā)布包。新系統(tǒng)不會預(yù)裝這個(gè)老運(yùn)行庫所以目標(biāo)機(jī)器缺少依賴。解決把C:\Windows\SysWOW64\msvbvm60.dll拷貝到 EXE 同目錄再帶上工程用到的所有 OCX 文件。這里有兩個(gè)選擇一是使用 VB6 自帶的打包向?qū)砂惭b程序二是手動(dòng)發(fā)布文件清單。我維護(hù)老系統(tǒng)時(shí)更傾向手工發(fā)布因?yàn)榇虬驅(qū)傻?CAB 安裝包在 Windows 11 上有時(shí)會被系統(tǒng)攔截。發(fā)布時(shí)注意如果目標(biāo)機(jī)器是 32 位系統(tǒng)運(yùn)行庫放 System32 或 EXE 目錄都行目標(biāo)機(jī)器是 64 位系統(tǒng)運(yùn)行庫放在 EXE 所在目錄最省事不需要安裝到 SysWOW64。放同目錄的好處是不會污染全局環(huán)境卸載時(shí)直接刪文件夾就能清干凈。4.5 補(bǔ)丁打到了錯(cuò)誤的 32 位目錄上現(xiàn)象補(bǔ)丁顯示安裝成功但 IDE 里還是舊版本號工程編譯后運(yùn)行庫版本也一直沒變。原因64 位系統(tǒng)下 32 位組件的目錄是C:\Windows\SysWOW64但有的補(bǔ)丁或安裝腳本內(nèi)部邏輯會指向C:\Windows\System32。System32 下放的是 64 位文件VB6 的 32 位運(yùn)行庫根本不會出現(xiàn)在那里。補(bǔ)丁把文件寫進(jìn)了錯(cuò)誤位置或者只寫了注冊表沒寫 DLL導(dǎo)致表面成功、實(shí)際無效。解決用 3.4 的腳本檢查 msvbvm60.dll如果文件在 System32 里找到了先刪除或改名再確認(rèn) SysWOW64 下的版本。如果 SysWOW64 下版本不對補(bǔ)丁覆蓋安裝還是無效就手動(dòng)把補(bǔ)丁包里的 msvbvm60.dll 解出來用管理員權(quán)限復(fù)制到 SysWOW64并重新注冊。這類問題最容易出現(xiàn)在“優(yōu)化軟件”動(dòng)過系統(tǒng)文件、或有人把 32 位 DLL 手動(dòng)拷到 System32 的機(jī)器上。排查時(shí)不要只看一個(gè)目錄要兩個(gè)目錄都查順手看下文件創(chuàng)建時(shí)間。補(bǔ)丁安裝時(shí)間之后被修改過的 DLL往往是罪魁禍?zhǔn)住?. 裝完怎么驗(yàn)證跑通從 IDE 到獨(dú)立 EXE 的完整檢查環(huán)境裝到這一步最怕的就是“看著裝好了實(shí)際跑不了”。我這邊每次裝完 VB6 SP6最后都會強(qiáng)制走一遍下面的驗(yàn)證流程十分鐘內(nèi)就能確認(rèn)從開發(fā)到發(fā)布全鏈路是否正常。先做控件注冊驗(yàn)證。用第 4.2 的腳步把 MSCOMCTL.OCX、MSADODC.OCX 等常用控件注冊一遍沒有報(bào)錯(cuò)就算過。然后打開 VB6.EXE新建一個(gè)“標(biāo)準(zhǔn) EXE”工程往窗體上拖一個(gè)按鈕和一個(gè)文本框直接按 F5 運(yùn)行。這一步能跑起來說明 IDE 主程序和常用 ActiveX 控件都沒有問題。接著驗(yàn)證編譯。在 VB6 菜單欄點(diǎn)“文件 - 生成 Project1.exe”生成后打開文件所在目錄用 PowerShell 檢查文件是否能正常啟動(dòng)Start-Process -FilePath C:\TestProject\Project1.exe -PassThru | Select-Object Id, ProcessName如果Start-Process沒有報(bào)錯(cuò)返回里能看到進(jìn)程 Id說明 EXE 已經(jīng)跑起來了。再確認(rèn)這個(gè) EXE 能正常結(jié)束就說明編譯鏈路是通的。最后驗(yàn)證運(yùn)行庫。把剛剛生成的 EXE 和msvbvm60.dll拷貝到一個(gè)沒有裝 VB6 的干凈目錄雙擊運(yùn)行一次。這一步是模擬目標(biāo)機(jī)器環(huán)境。如果點(diǎn)擊后進(jìn)程一閃而過打開 Windows 事件查看器看“應(yīng)用程序”日志里是否有模塊錯(cuò)誤錯(cuò)誤模塊一般會直接告訴你缺的是哪個(gè) DLL 或 OCX。驗(yàn)證項(xiàng)操作方法預(yù)期結(jié)果不通過時(shí)查哪里IDE 能啟動(dòng)雙擊 VB6.EXE主窗口正常彈出檢查兼容模式、VB6 路徑控件能加載新建工程拖控件運(yùn)行按鈕和文本框正常顯示用 32 位 regsvr32 重注冊工程能編譯文件 - 生成 EXE無編譯錯(cuò)誤檢查引用工程和對象庫EXE 能啟動(dòng)Start-Process 運(yùn)行 EXE進(jìn)程存在檢查運(yùn)行庫和 ActiveX 依賴目標(biāo)機(jī)能跑換干凈目錄運(yùn)行 EXE無缺少 DLL 提示補(bǔ) msvbvm60.dll 和 OCX從那以后我每次遷移 VB6 環(huán)境都強(qiáng)制執(zhí)行這個(gè)流程尤其是最后“換干凈目錄跑一遍”十次里有八次能提前揪出缺失的運(yùn)行庫。很多人在開發(fā)機(jī)上反復(fù)裝 SP6卻忽略發(fā)布機(jī)不具備相同控件環(huán)境最后交付現(xiàn)場翻車。VB6.0 SP6 補(bǔ)丁裝不裝的區(qū)別不在安裝包本身而在 IDE 能不能真正打開老工程、編譯出的 EXE 能不能脫離開發(fā)環(huán)境存活。環(huán)境裝完跑通這個(gè)最小驗(yàn)證你的老項(xiàng)目才算是真正落地。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取