从IIS AppPool运行LibreOffice soffice.exe创建临时文件的权限问题

ddarikpa  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(153)

我正在使用AppPool身份从IIS站点运行soffice.exe以将docx转换为pdf。
不知何故,它试图在C:/Windows/LibreOffice中创建文件,这会导致访问错误。是什么导致了这种行为?
这是代码部分:

string libreOfficePath = @"C:\Program Files\LibreOffice\program\soffice.exe";
string docxPath = @"D:\docs\abc.docx";
string pdfOutputPath = @"D:\docs\out";
string logPath = @"D:\docs\logs";

string arguments = "--headless --convert-to pdf " + docxPath + " --outdir " + pdfOutputPath;

var startInfo = new ProcessStartInfo
{
    FileName = libreOfficePath,
    Arguments = arguments,
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    UseShellExecute = false,
    CreateNoWindow = true,
    WorkingDirectory = @"C:\Program Files\LibreOffice\program"
};

这些是我的设置:x1c 0d1x我已为这些文件夹授予应用池权限。
如果我将应用程序池标识设置为localsystem,该命令将完成此工作并创建pdf。
如果我设置为apppool identity,进程会尝试在C:/Windows/LibreOffice中创建临时文件,这显然会失败。
应用程序监视器记录以下内容:

这是它得到的命令行:

"C:\Program Files\LibreOffice\program\soffice.exe" "--headless" "--convert-to" "pdf" "D:\docs\abc.docx" "--outdir" "D:\docs\out" "-env:OOO_CWD=2C:\\Program Files\\LibreOffice\\program"
c90pui9n

c90pui9n1#

尝试了几百次之后,指定文件夹:

-env:UserInstallation=

解决了这个问题

相关问题