最近,研究了一下后台静默批量生成PDF的方法。
最初的想法是写一个PdfCreate.exe 命令行,exe通过fastreport组件产生PDF(为了复用之前创建好的表单),
然后再写一个windows服务PDFCreateService , 做任务调度,启动PdfCreate.exe程序来产生PDF,PdfCreate.exe 处理完任务之后,就退出。
然而实际测试发现,PDFCreateService服务无法正常的启动PdfCreate.exe。也做过很多研究,起初认为是由于Session 0 无法穿透的原因。
以为需要调用CreateProcessAsUser 或 CreateProcessWithLogonW . 但发现
最后发现,影响子进程是否正常启动的因素是:指定服务启动的账户。如果指定服务用Administrator来启动。在服务中用CreateProcess API可以正常的启动exe产生pdf。用本地系统账户 或者 LOCAL Service 都不行。
PdfCreat.exe 则是直接使用WinMain的函数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步