2017-03-01 3 views
0

Ich habe Probleme mit dem Symbol der Dokumentdateien meiner Anwendung.
Erstens, ich bin die Registrierung die Dateierweiterung:Symbol (DefaultIcon) wird anders angezeigt

HKEY_CLASSES_ROOT\.Ext\(default) = AppName 

Dann einen Shell-Befehl zum Öffnen und ein Symbol ich ihm geben:

HKEY_CLASSES_ROOT\[AppName]\shell\open\command\(default)="path\app.exe" 
HKEY_CLASSES_ROOT\[AppName]\DefaultIcon\(default)="path\app.exe",0 

Das Symbol wird angezeigt in Explorer, aber nicht das Original stattdessen zeigt er es auf einem weißen Blatt:

enter image description here

der linke die zugehörige Datei ist, die Richtig ist die ausführbare Datei.

Wie stelle ich die Registrierungseinträge so ein, dass das ursprüngliche Symbol angezeigt wird?

Antwort

1

Ich weiß nicht, ob DefaultIcon Zitate auf dem Weg unterstützt, außer, dass die Registrierung OK aussieht.

Nachdem diese Einträge zu schreiben, sollten Sie SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0) so dass andere Anwendungen aufrufen können sich erfrischen.

Das Dokumentsymbol wird von der Shell generiert (GIL_SIMULATEDOC), wenn es keinen gültigen DefaultIcon Eintrag findet, aber es weiß, welche ausführbare Datei es verwenden wird. Dies kann passieren, wenn Sie "Öffnen mit" verwenden, um Ihren Dateityp zu öffnen, wenn er nicht registriert ist.

Try SHChangeNotify aufrufen und dann neu starten. Wenn das Problem nicht behoben wird, sollten Sie in der Registrierung nach Ihrer Dateierweiterung suchen und sie aus Explorers HKCU FileExts Schlüssel s und alle "auto" Einträge für Ihren Typ in HKCR entfernen. Das Löschen des Shell-Iconcaches könnte ebenfalls hilfreich sein.

+0

Ich nenne eigentlich 'SHChangeNotify' genau wie du erwähnt hast, tut mir leid, dass du das versteckt hast. Die Methode, die das Ganze funktioniert, funktioniert perfekt auf zwei weiteren Dateierweiterungen. So scheint es, dass Sie richtig sind - vielleicht treffe ich eines Tages "Öffnen mit". Das Hässliche ist, dass es mit der aktuellen Implementierung nicht repariert werden kann. Hast du einen Hinweis dafür? Irgendwo muss es einen Cache geben? – joe

+0

Zuerst sollten Sie versuchen, die Anwendung auf einem neuen Computer zu registrieren (und wenn Sie keinen Zugang zu einem haben, versuchen Sie es zumindest mit einem anderen Benutzerkonto), und wenn es nicht funktioniert, gibt es ein Problem mit der Registrierung (Pfad? Zitate?). Die Art und Weise, wie der Explorer Dinge handhabt, ist nicht dokumentiert, aber Sie können versuchen, was ich bereits vorgeschlagen habe: Suchen Sie nach Ihrer Erweiterung im Schlüssel "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts" und den Schlüsseln "% yourext% _auto_file" in HKCR und lösche sie. Wenn Ihre Erweiterung eindeutig ist, können Sie Ihre App deinstallieren und dann nach Schlüsseln/Werten suchen, die Sie nicht erstellt haben. – Anders

Verwandte Themen