1

因此,我们在 Server 2008 上运行了一项服务,该服务启动了一个进行一些渲染的进程(C# 应用程序)。该过程运行成功,但它使用的是系统字体(我相信是 Arial)而不是应该加载的字体。如果我通过登录服务器手动运行此过程,则字体加载成功并且该过程正确呈现。

我尝试使用 CreateProcessWithLogonW 运行此过程,但这仍然不起作用。我假设这与 Server 2008 中的非交互式会话有关,但我不知道如何解决它。

4

2 回答 2

0

我最终通过使用PSExec使用 -i 和 -h 选项解决了这个问题。据我了解,它在场景下运行 CreateProcessWithLogonW 或类似的东西。这正确地使用 session0 之外的用户帐户创建了一个新会话。我唯一要做的就是确保我尝试运行该进程的用户接受了 PSExec 的 EULA。我还运行了“交互式服务检测”服务,以防 EULA 在 session0 中弹出。之后我关闭了“交互式服务检测”,因为我不再需要它(不确定我是否需要执行最后一步)。

于 2011-05-10T18:38:03.747 回答
0

我知道您找到了解决方案,但我遇到了与您的问题非常相似的问题(通过计划任务运行应用程序将使用默认字体,但在本地运行时会找到我安装的自定义字体)并且我找到了不同的解决方案;在 Server 2008 上,存在一个问题,即非交互式用户在安装后不会立即注册自定义字体,而普通用户(即在实际登录到计算机的用户上运行时)确实会立即注册字体。

对我有用的解决方案是简单地重新启动安装字体的机器,并且字体开始在非交互式帐户下工作,因为当计算机打开时它会正确注册。字体安装似乎有一个错误,在重新启动之前,它无法为非交互式用户正确注册字体。

于 2017-03-06T23:15:42.107 回答