在本地開發環境中,使用 COM 元件操作 Word 文檔(讀取內容)運作正常。但將應用程式部署至 Windows Server 2008(安裝 Word 2013)後,卻遭遇權限相關錯誤,導致功能失效。
依照網路常見教學,在 DCOM 設定中將 Word Application 的身分設為「互動式使用者」,執行時仍拋出例外:
Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 8000401a 因為配置標識不正確,系統無法開始服務器進程。請檢查用戶名和密碼。 (Exception from HRESULT: 0x8000401A)
改設為「啟動使用者」後,錯誤變為:
Object reference not set to an instance of an object
若透過遠端桌面連線至伺服器且**不關閉視窗**,此時操作竟然正常無誤。這暗示問題核心在於「互動式桌面 session 的可用性」。
Word 自動化屬於「非視覺化介面的 Office 應用程式」,在伺服器環境下必須擁有互動式桌面才能正確啟動。預設的「啟動使用者」或「互動式使用者」帳戶(如 NETWORK SERVICE、LOCAL SERVICE)並不具備真實的桌面 session,因此無法建立 Word 執行所需的視窗站與桌面資源。遠端桌面連線保持開啟,恰好提供了該 session,故能暫時繞過問題。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems\Windows 中的 SharedSection 參數,增加桌面堆疊記憶體。Word DCOM 錯誤 8000401A 的核心在於「缺乏互動式桌面」。將身分設定為擁有桌面登入權限的管理員帳戶可立即解決,但長遠規劃應改用無需 Office 安裝的純程式庫,提升穩定性與安全性。