2009-09-02 10 views
2

This articleスクリプトからフォントをインストールする方法を見せてくれたが、今はそれらを除去する問題に直面しています。どうやってやるの ?任意の言語でokです、私は私が後で必要なものに情報を変換します。どのように私は、Windowsの下で、私のコードからフォントを削除することができますか?

EDIT:わかりましたので、私は今、(少なくとも一部のほとんど)のフォントをアンインストールする方法を知っています。私はRemoveFontResourceへの呼び出しを発行しています。 0xffff,0x001D,0,0(HWND_BROACAST、WM_FONTCHANGE ...と私は他の2つのパラメータは放置何を忘れてしまった):その後、私はパラメータでSendMessageを使用しています。事は、これは、フォントを削除し、ですが、Control PanelさんFontsエントリで、フォントはまだあなたにも、そこからそれを削除しようとすると、それがソースファイルまたはディスクから読み取ることができないと言うだろうにもかかわらず、(そこに表示されます。

のSendMessageを呼び出すRemoveFontResource
  • を呼び出すC:\Windows\Fonts
  • から物理的に削除

    • だから基本的に、私はこの順序でフォントを削除しています

      アンインストールの適切な方法は何ですか?

  • 答えて

    4

    はなく、のようにそれを行うには「正しい」方法です:

    Windows 95 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Fonts] 
    
    Windows NT 
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts] 
    

    を次のようにレジストリパスは以下のようにキーがあります我々はよく、それは非常に動作しません知っている - 予想通り。

    RemoveFontResource(fontPath);    
    DeleteFile(fontPath); 
    ::SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 
    

    REBOOT

    は、私は上記のコードを実行し、あなたの問題を(コントロールパネルはまだ、しかし、フォントファイルがなくなっているフォントを示して)重複しました。私はその後、再起動します。今、フォントはフォントコントロールパネルアプレットからなくなっています。注意すべき他の

    何か:コントロールパネルはまだ彼らのフォントリストにそれを記載されている「そこ」アプリケーションはもはや(私は特に前とwebdings.ttfを削除した後、ワードパッドを試してみました - 再起動せずに)としてフォントを示したにもかかわらず、

    よろしくお願いします。再起動は貧弱な解決策です。特に、フォントを削除した後に再起動するまで、フォントを更新する必要がある場合は(フォントはまだインストールされていますが、 )。しかし

    もしあなたがしたいすべてのフォント削除である - そのない最悪のソリューションを - フォントがその唯一のコントロールパネルのフォントでは見え限り、あなたは(アプリがそれを見ることはありません、それをアンインストールした後に行って本質的です私が言うように)、再起動を強制する必要はありません。 (奇数判定が見られている理由を示すこと)RemoveFontResourceFontのSDKヘルプから

    フォントへの未解決の参照がある場合は何のデバイスコンテキスト がそれを使用していないされるまで、関連するリソース がロードされたまま。

    +0

    ええ、これは自動化されたプロセスで行う必要があります。再起動の種類はオプションではありません。 – Geo

    +0

    これ以上の調査では、WMIサービスを指しているようです。フォントを削除した後に*サービスを再起動すると、コントロールパネルのフォントリストが正しく表示されます(注:WMIサービスを再起動してF5キーを押すとエクスプローラでc:\ windows \ fontsフォルダを開いても*それを表示しますが、フォントコントロールアプレットを終了して再起動すると、そのフォントが表示され、フォントを再インストールできます)さらに注意:削除されたフォントがコントロールパネルから削除されたことが再び開始されるまではありませんでした。 – Ruddy

    +0

    WMIサービスを再起動するコマンドも表示できますか?コマンドラインから行うことはできますか? – Geo

    1

    あなたのすべてのフォントはCで発見することができます:\ WINDOWS \フォント\

    エクスプローラではなく、実際のファイル名のフォント名を表示するには、このフォルダを隠しますが、そのすべてがします。あなたはCの行を編集してコメントアウトすることができます:\ WINDOWS \フォントの\ desktop.iniを、この機能を無効にして、フォントファイルを明らかに(多分あなたを有効にするにはエクスプローラを再開する必要があります)。

    4

    Havenardが述べたと、あなたがFontFilePathは、削除したいファイルのファイルパスです

    objFSO.DeleteFile(FontFilePath); 
    

    を行うことができます言及した記事を使用すると、あなたは実際のファイル名を見つけたら。ここ

    詳細: technet article

    私はあなたのコメントを見るまで、私は考えていなかったあなたに実行することの問題は、プログラムはいくつかの特定の項目について、そのフォントを必要とするかもしれないということです。すべての既知のシステムフォントは、レジストリ内に格納されています。あなたは、フォントを削除する場合は、レジストリからキーを削除する必要があります。私が今までのコードのこれらの3本のラインを見てきたすべてのドキュメントから

    Key name = Full name of the font 
    Key type = REG_SZ 
    Key Value = name of font file 
    
    +0

    私はちょうど削除呼び出しを使用することができます。私は他のステップが(レジストリのように)関与するかどうか疑問に思いました。 – Geo

    関連する問題