随笔 - 94  文章 - 0 评论 - 15 阅读 - 13万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

最近,研究了一下后台静默批量生成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的函数

 

 

posted on   zooz  阅读(200)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示