C# SHGetFileInfo在未请求覆盖时返回带覆盖的图标
出于某种原因,调用.lnk文件的SHGetFileInfo会返回带有链接覆盖的图标,即使我没有请求它:C# SHGetFileInfo在未请求覆盖时返回带覆盖的图标,c#,.net,winapi,C#,.net,Winapi,出于某种原因,调用.lnk文件的SHGetFileInfo会返回带有链接覆盖的图标,即使我没有请求它: Shell.SHGetFileInfo(path, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo), SHGFI.ICON | SHGFI.SMALLICON | SHGFI.TYPENAME | SHGFI.DISPLAYNAME); 我正在使用shFileInfo.hIcon获取图标句柄(Windows7,x64)。关于为什么会发生
Shell.SHGetFileInfo(path, 0, ref shFileInfo, (uint)Marshal.SizeOf(shFileInfo),
SHGFI.ICON | SHGFI.SMALLICON | SHGFI.TYPENAME | SHGFI.DISPLAYNAME);
我正在使用shFileInfo.hIcon获取图标句柄(Windows7,x64)。关于为什么会发生这种情况,以及如何在没有覆盖的情况下获取图标的任何建议?我最终能够通过在系统图像列表中获取图标的索引并使用ImageList\u GetIcon获取无覆盖图标的句柄来解决这一问题:
是否有人输入了SHGFI.DISPLAYNAME的值?它应该是0x200。SHGFI.ADDOVERLAYS是0x20。某人容易犯错误。已经考虑过的定义是:.ICON=0x100、.SMALLICON=0x1、.TYPENAME=0x400和.DISPLAYNAME=0x200。