2017-03-01 8 views
0

私のアプリケーションのドキュメントファイルのアイコンに苦労しています。元のアイコン(DefaultIcon)が別様に表示される

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

アイコンがエクスプローラに表示されますが、ではない:私はそれをシェルオープンコマンドとアイコンを与えるその後

HKEY_CLASSES_ROOT\.Ext\(default) = AppName 


まず、私は、ファイルの拡張子を登録しています代わりに、それは白い用紙に表示する:

enter image description here

左一方が関連付けられたファイルであり、右は実行可能ファイルです。

元のアイコンが表示されるようにレジストリエントリを設定するにはどうすればよいですか?

答えて

1

DefaultIconがパス上で引用符をサポートしているかどうかわかりませんが、登録に問題はないようです。

これらのエントリを書き終えたら、SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)に電話して、他のアプリケーションが自分自身を更新できるようにしてください。

有効なDefaultIconエントリが見つからない場合、ドキュメントアイコンはシェル(GIL_SIMULATEDOC)によって生成されますが、どの実行可能ファイルが使用されるかはわかります。これは、「Open With」を使用してファイルタイプが登録されていないときに開く場合に発生します。

SHChangeNotifyを呼び出して再起動してください。それでも問題が解決しない場合は、レジストリでファイル拡張子を検索し、エクスプローラから削除する必要があります。HKCU FileExtsキーおよびHKCRのタイプの「自動」エントリ。シェルのアイコンキャッシュをクリアすることも役に立ちます。

+0

私は実際にあなたが言ったように正確に 'SHChangeNotify'を呼び出します、これを隠して申し訳ありません。全体を行う方法は、2つの別のファイル拡張子で完璧に機能します。だから、あなたが正しいと思われます - たぶん私はいつか "Open with"とヒットします。 醜いのは、現在の実装では修復できないということです。あなたはそれについて何かヒントを持っていますか?どこかにキャッシュが必要ですか? – joe

+0

最初に新しいマシンにアプリケーションを登録してみてください(もしあなたがアクセスできない場合は、少なくとも別のユーザーアカウントを試してください)、動作しなければ、登録に問題がありますか?引用?)。エクスプローラの操作方法は文書化されていませんが、私がすでに提案したことを試すことができます: "HKCU¥Software¥Microsoft¥Windows¥CurrentVersion¥Explorer¥FileExts"キーとHKCRの "%yourext%_auto_file"それらを削除します。拡張機能が一意である場合は、アプリをアンインストールして、作成しなかったキー/値を検索できます。 – Anders

関連する問題