2010-09-04 17 views
5

Ich fotografiere hier im Dunkeln - die Suche scheint hier nicht produktiv zu sein. Ich möchte ein .NET-Programm erstellen, um die Installation und Deinstallation von Schriftarten zu überwachen. Wenn etwas installiert oder deinstalliert ist, möchte ich ein Programm ausführen, um etwas zu tun.Monitor Installieren/Deinstallieren von Fonts unter Windows

Ich dachte, vielleicht ein Windows-Dienst, aber bin nicht sehr weit mit herauszufinden, wie man Schriften zu überwachen. Ist das der richtige Weg und wenn ja, was übersehe ich? Wenn nicht, gibt es einen anderen Weg, dies zu tun?

Antwort

2

Sie können die Registrierung für Schriftartänderungen überwachen. Mit Blick auf den Prozessmonitor sehe ich es die Informationen hier auf Windows speichert 7.

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ Currentversion \ Fonts

+0

Was würde das bedeuten? Führen Sie jede Sekunde eine Abfrage für diesen Schlüssel durch, um zu sehen, ob sich der '.Count' geändert hat? –

+0

Wenn die Anwendung ausgeführt wird, wäre es am besten, ein Ereignis zu erhalten. Nach dem Abrufen des Ereignisses können Sie in der Registrierung nach Änderungen suchen. Beim Start könnten Sie die Schriftarten in der Registrierung auflisten, um auch nach Änderungen zu suchen. –

1

können Sie einen Haken für die WM_FONTCHANGE Windows-Nachricht erstellen.

Überprüfung dieser Artikel Using Window Messages to Implement Global System Hooks in C#

+0

Sendet Windows diese Nachricht bei der Installation/Deinstallation? Oder, genauer gesagt, verwendet Windows 'AddFontResource' oder' RemoveFontResource'? –

+0

@Otaku, Überprüfen Sie den Msdn-Link aus der Antwort 'Eine Anwendung, die Schriftarten aus dem System hinzufügt oder entfernt (z. B. mithilfe der AddFontResource- oder RemoveFontResource-Funktion) sollte diese Nachricht an alle übergeordneten Fenster senden. – RRUZ

+0

Ich tat. Leider installiert 'AddFontResource' eine Schriftart nicht dauerhaft. Von http://msdn.microsoft.com/en-us/library/dd183326(VS.85).aspx es besagt * Diese Funktion installiert die Schriftart nur für die aktuelle Sitzung. Wenn das System neu gestartet wird, ist die Schriftart nicht vorhanden. Damit die Schriftart auch nach dem Neustart des Systems installiert wird, muss die Schriftart in der Registrierung * aufgeführt sein. Das Überwachen von Schriftart-Hinzufügungen auf diese Weise würde nicht zeigen, welche Schriftarten tatsächlich installiert wurden. –

0

Ich weiß nicht so viel über Schriften so könnte ich falsch sein aber ich denke, dass sie alle in% windir% \ Fonts installiert sind.

Wenn dies der Fall ist, sollten Sie in der Lage sein, eine FileSystemWatcher in Ihrem Dienst einzurichten, um dieses Verzeichnis für Änderungen zu beobachten.

+0

Die meisten sind, aber nicht alle (Vista/7 erlauben die Installation von Schriften außerhalb von% windir% \ Fonts). –