SET CLASSLIB TO REGISTRY.VCX ADDITIVE && Registry class from the FFC oReg = CREATEOBJECT('Registry') lnresult = oReg.OpenKey(".doc") && open for Word IF lnresult = 0 STORE "" TO lckey, lciconpath, lcvalue lnresult = oReg.GetKeyValue("", @lcvalue) IF lnresult = 0 ? lcvalue oReg.CloseKey lcvalue = ADDBS(lcvalue) + "DefaultIcon" lnresult = oReg.OpenKey(lcvalue) IF lnresult = 0 lnresult = oReg.GetKeyValue("", @lciconpath) && get the icon ? lciconpath oReg.CloseKey ENDIF ENDIF oReg.CloseKey ENDIFThe basic premise, however, works. I tested it on both a Win98SE box and under Win2K. The variable must be passed by reference (the reason for the @) in both calls to GetKeyValue. If lcvalue is empty on return, it means that there's no default value associated with the extension. In this case, Windows uses a default icon for display purposes.