2016-10-03 20 views
0

プライベートフォントを追加すると、Windows 10 Proのローカルの開発マシンで正常に動作します。ただし、次のエラーでのWindows Server 2012 R2上の非常に同じコード結果:PrivateFontCollection.AddFontFile()はジェネリックGDI +エラー例外をスローします

System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+. at System.Drawing.Text.PrivateFontCollection.AddFontFile(String filename)

var privateFontCollection = new PrivateFontCollection(); 
privateFontCollection.AddFontFile("Roboto-Regular.ttf"); 

私はそれがNotFoundExceptionになり、そのファイルのパスを右にする必要があり、ファイルを削除すると。私はすべてのユーザーがファイルに対して可能な限りすべての権限を持っていることを確認しました。 (私は、私のローカル勝利10マシンのすべての許可を拒否すれば同じ "一般的なエラー"が発生するので、許可の問題かもしれないことが判明しました)

誰でもこの問題の解決策がありますか? プロダクションマシンのサービスユーザーに、プライベートフォントの「インストール」に必要な他の権利が不足している可能性がありますか?多分、フォントは許可されていない特定のディレクトリにインストールされますが、どこにあるのかは分かりませんでした。 「ジェネリックエラー」を説明するこの非常に自己を手伝ってください。

答えて

0

絶対パスを使用しないと問題が発生したようです。ファイルを削除すると明示的なFileNotFoundが発生したため、最初は考えなかった。 絶対パスを使用すると、そのトリックが実行されました。

+0

悪いから悪いですが、* after *あなたがPrivateFontCollection.Dispose()を呼び出すまでFreeCoTaskMem()を呼び出すことはできません。メモリ破損のバグは、通常気付くにはあまりにも微妙で、頻繁にAVEを投げつけるわけではありません。元の問題はおそらく非常にばかげているかもしれませんが、File.ReadAllBytes(path)を使用してより良い例外を得るまで見つけることはできません。 *常に* baz.ttfではなく、c:\ foo \ bar \ baz.ttfという絶対パス名を使用します。 –

+0

@HansPassantを指摘してくれてありがとう。 –

関連する問題