2017-03-01 13 views
0

我正在爲我的應用程序的文檔文件的圖標苦苦掙扎。
首先,我註冊的文件擴展名:圖標(DefaultIcon)的顯示方式有所不同

HKEY_CLASSES_ROOT\.Ext\(default) = AppName 

然後我給它一個外殼打開命令和圖標:

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

的圖標顯示在瀏覽器中,但不是原單,而是將其顯示在一個白色片材:

enter image description here

左邊一個是相關聯的文件時,該正確的一個是可執行文件。

如何設置註冊表項以顯示原始圖標?

回答

1

我不知道DefaultIcon是否支持路徑上的引號,除了註冊看起來不錯。

寫完這些條目之後,您應該調用SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)以便其他應用程序可以自行刷新。由外殼(GIL_SIMULATEDOC)產生

的文檔圖標,當它無法找到有效的DefaultIcon條目,但它知道哪些可執行程序,它會使用。如果您使用「打開方式」在沒有註冊時打開文件類型,則可能會發生這種情況。

嘗試呼叫SHChangeNotify,然後重新啓動。如果這樣做不能解決問題,那麼你應該在註冊表中搜索你的文件擴展名,並將其從瀏覽器HKCU FileExtss以及你在HKCR中輸入的任何「自動」條目中移除。清除shell iconcache也可能有所幫助。

+0

我實際上正如你所說的那樣調用'SHChangeNotify',抱歉隱藏這個。整個事情在另外兩個文件擴展名中完美的方法。所以看起來你是對的 - 也許我有一天會打開「打開」。 醜陋的是,它不能用當前的實現來修復。你有什麼暗示嗎?某處必須有緩存? – joe

+0

首先,您應該嘗試在新計算機上註冊應用程序(如果您沒有訪問權限,至少嘗試使用其他用戶帳戶),如果不起作用,那麼註冊時出現問題(路徑?報價?)。他們的方式瀏覽器處理事情沒有記錄,但你可以嘗試我已經建議:在HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts鍵和HKCR的任何「%yourext%_auto_file」鍵中查找你的擴展名並刪除它們。如果您的擴展程序是唯一的,那麼您可以卸載您的應用程序,然後搜索您未創建的鍵/值。 – Anders

相關問題