1

そのため、サーバー2008で実行されているサービスがあり、レンダリングを実行するプロセス(C#アプリ)を開始します。プロセスは正常に実行されていますが、ロードされるはずのフォントの代わりにシステムフォント(Arialだと思います)を使用しています。サーバーにログインしてこのプロセスを手動で実行すると、フォントが正常に読み込まれ、プロセスが正しくレンダリングされます。

CreateProcessWithLogonWを使用してこのプロセスを実行しようとしましたが、それでも機能しません。これはServer2008の非対話型セッションに関係していると思いますが、解決方法がわかりません。

4

2 に答える 2

0

私は、-iおよび-hオプションを使用してPSExecを使用することでこれを解決することになりました。私が理解していることから、それはシーンの下でCreateProcessWithLogonWまたは同様のものを実行します。これにより、session0外のユーザーアカウントで新しいセッションが正しく作成されました。私がしなければならなかった唯一のことは、PSExecのEULAが、プロセスを実行しようとしたユーザーに受け入れられていることを確認することでした。また、セッション0でEULAがポップアップした場合に備えて、「インタラクティブサービス検出」サービスを実行しました。その後、「インタラクティブサービスの検出」が不要になったため、オフにしました(この最後の手順を実行する必要があるかどうかはわかりません)。

于 2011-05-10T18:38:03.747 に答える
0

あなたが解決策を見つけたことは知っていますが、私はあなたと非常によく似た問題を抱えていました(スケジュールされたタスクでアプリケーションを実行するとデフォルトのフォントが使用されますが、ローカルで実行すると、インストールしたカスタムフォントが見つかります)、別の解決策を見つけました。Server 2008では、非対話型ユーザーのインストール直後にカスタムフォントが登録されないのに対し、通常のユーザー(つまり、実際にマシンにログインしているユーザーで実行している場合)ではフォントがすぐに登録されるという問題があります。

私のために働いた解決策は、フォントがインストールされていたマシンを再起動するだけで、コンピューターの電源を入れたときに正しく登録されるように、非対話型アカウントでフォントが機能し始めました。フォントのインストールには、再起動するまで非対話型ユーザーのフォントが正しく登録されないというバグがあるようです。

于 2017-03-06T23:15:42.107 に答える