雙系統環境 (C: Win98 / E: Win2000) 下,嘗試在 Win2000 直接執行安裝於 Win98 的軟體 (VFP6、VC++、WPS2000、WinZip、Photoshop 等) 時,頻繁彈出「找不到動態連結庫」對話框,列出搜尋路徑:D:\Program Files\Adobe\Photoshop5.0\cs、E:\WINNT\SYSTEM32、E:\WINNT\SYSTEM、E:\WINNT、E:\WINNT\system32\Wbem。實測發現缺失 DLL (如 PFPICK.dll) 實際存在於系統目錄,問題核心在於 PATH 環境變數未包含 Win98 系統目錄,導致載入器搜尋失敗。
Path,決定可執行檔/DLL 搜尋順序。Win2000 預設系統 Path:%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem。
Path,在末尾追加 (以分號分隔):C:\WINDOWS;C:\WINDOWS\SYSTEM;C:\WINDOWS\SYSTEM32msipcsv.exe - 找不到程序輸入點 GetProcessFlags on KERNEL32.dll,但點確定後仍可執行 (系統核心未受損)。C:\WINDOWS\SYSTEM) 原不在 Win2000 PATH 中,導致載入器找不到安裝於 Win98 目錄下的共用 DLL。HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 直接映射至 %SystemRoot%\System32,不受 PATH 影響。故 NetAnts 錯誤屬於版本相容性問題 (Win98 版 Kernel32 缺少 GetProcessFlags),而非路徑問題。%SystemRoot%\WinSxS),但舊版軟體未使用 Manifest,仍依賴傳統 DLL 搜尋。| 建議 | 說明 |
|---|---|
| 優先重新安裝 | 針對關鍵業務軟體,在目標 OS 重新安裝為最佳,確保註冊表、COM 元件、服務正確部署。 |
| Path 追加置尾 | 將舊系統目錄置於 PATH 末尾,避免同名 DLL 衝突導致系統核心元件載入錯誤版本。 |
| 使用「應用程式路徑」註冊表 | HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\YourApp.exe 設定 Path 欄位,精準指定單一應用程式搜尋路徑,不汙染全域 PATH。 |
| 虛擬化/相容模式 | Win2000 內建「相容性」分頁 (右鍵 .exe → 內容 → 相容性),可模擬 Win95/98 環境,減少路徑依賴。 |
| 監控副作用 | 變更後觀察系統啟動速度、其他應用程式是否出現異常 DLL 載入 (Process Monitor 追蹤)。 |
環境變數是作業系統的「導航系統」,精準調整 PATH 能打通異構系統間的二進位相依橋樑。但此為權宜之計,長遠規劃應建立標準化軟體部署流程 (MSI/Group Policy/SCCM),從源頭消除「跨系統直接執行」的不確定性。