IIS 用 C# 呼叫 LibreOffice:轉檔權限與逾時修正
我第一次把 LibreOffice 轉檔程式部署到 IIS 時,本機能跑,伺服器卻只留下三種結果:沒有輸出檔、權限不足,或 soffice.exe 卡著不結束。 我一開始把問題全歸到身分模擬,照網路範例串了 LogonUser、ImpersonateLoggedOnUser、DuplicateTokenEx 和 CreateProcessAsUser。程式變長一大截,權限也越開越多,問題仍然不好查。 後來我才發現,這個做法把兩件事混在一起了:誰負責執行 LibreOffice,以及程式怎麼確認轉檔成功。固定由同一個帳號轉檔時,最直接的解法是讓 IIS 應用程式集區本身就用那個身分執行,再由 Process.Start 啟動 LibreOffice。這樣不需要在每次請求裡切換 Windows token,也不用把密碼塞進 Web.config。 2026-07-27 修訂:舊版文章把 CreateProcessAsUser 的權限授予對象寫錯,也多做了一次不必要的 DuplicateTokenEx。這次依 Microsoft 與 LibreOffice 官方文件重寫,舊程式碼不建...




