当打印请求来自服务的子进程时找不到字体

当打印请求来自服务的子进程时找不到字体

我在 Windows Server 2003 机器上遇到了一个奇怪的问题,这个问题已经困扰我好几天了。

我在机器上运行一项服务,每 60 秒调用一次指定的 exe,该 exe 查看本地数据库以查看是否需要打印任何内容,如果需要,它会将其打印到网络激光打印机上。

我遇到的问题是,当服务自动调用 exe 时,某些字体不会打印出来,但如果我双击 exe 运行它,就可以正常工作。

字体由管理员安装,但服务以 NT Authority\System 运行。我认为这可能与此有关,但我尝试以管理员身份运行服务,但这并没有解决问题。

是否存在我不知道的字体和权限问题可能会导致这种行为?

答案1

我现在已经让它工作了,尽管我仍然不完全确定为什么。

作为最后的手段,我重新启动了该盒子(我最初不愿意这样做,因为它是几个远程站点使用的服务器),现在该服务及其子进程可以打印所有字体。

我不知道在重启期间发生了什么,这在正常字体安装期间不会发生,但现在无法访问的东西却发生了!

答案2

NT Authority\System拥有比普通管理员更多的本地权限,因此除非有人添加了拒绝 ACL,否则不会出现本地资源的权限问题。(网络资源是另一回事,除非您允许访客访问,否则系统无法访问网络资源。)

我建议从进程监控查看应用程序无法访问的内容。同时查看日志记录选项(或其他任何内容),它们将为您提供诊断信息。

注意:如果应用程序设计用于交互使用,则它可能在尝试以某种方式与 GUI 交互时失败,解决这个问题几乎肯定需要更改代码。

相关内容