我有一个相当复杂的工具链,所以准备一个冗长的帖子,直到解决问题:
我设法在 Windows 7 下以服务器模式作为服务运行 PDFCreator 和虚拟 PDF 创建打印机。该过程的下一步是 PDFCreator 在创建 PDF 后调用 VBScript。该脚本通过 WebService 将 PDF 上传到我们的服务器,并轮询服务器以获取生成的 PDF。下载生成的 PDF 后,VBScript 需要将其打印到配置的打印机。
现在为了打印,我使用了 PDFCreator 的集成 COM 对象,它可以访问 GhostScript。对于启动 PDFCreator 服务的任何帐户,这在 Windows XP 上都能完美运行。例如,作为域用户可以从 VBScript 访问共享打印机,因为用户上下文与 PDFCreator 服务相同。
现在我在 Windows 7 上尝试了相同的操作,并像以前一样使用“本地系统”帐户,因为我的测试打印机是本地打印机(并且可以工作,即 TestPage)。效果是 wscript 留在任务管理器中并且永远不会完成。接下来,我为该服务激活了交互模式,并看到 Ghostscript 要求打印机打印到。打印机确实存在,因为我在 VBScript 中调用 GS 之前检查过,但出于任何原因,GhostScript 看不到打印机,尽管在打开的对话框中选择打印机,打印机在那里。
经过几天的搜索和尝试甚至没有成功的专用新管理员帐户,我终于想出了一种让它工作的方法。将 PDFCreator 服务的用户更改为“区域设置服务”我首先收到一个错误,即 PDFCreator COM 对象创建失败。好的,我认为这是有道理的,因为“语言环境服务”的权限比“语言环境系统”少。我通过更改 comexp.msc 下的访问权限并授予本地和远程 COM 和脚本访问的“区域设置服务”权限来解决此限制。瞧,一切正常。
我不明白的是:为什么“语言环境服务”帐户下的Ghostscript能够找到打印机,尽管该帐户的权限比“语言环境系统”少?
并且:我需要为“语言环境系统”或任何其他用户帐户设置哪个访问权限才能使其正常工作?
或者:这些账户之间是否有详细差异的综合列表?
非常感谢你和 Greetz,GHad