使Windows刷新图标缓存

2023-11-24

我真的很喜欢 KDE SC 4 的氧气外观。我编写了一个程序将这些图标应用到 Windows。该程序是用 NSIS 编写的,目前几乎功能齐全。但是,我发现让 Windows 意识到图标更改的唯一方法是终止 explorer.exe,删除图标缓存,然后重新生成 explorer.exe。SHChangeNotify with SHCNE_ASSOCCHANGED似乎无法让 Windows 意识到控制面板图标、我的电脑图标等的更改。请建议一种更好、不那么残酷的方法来让 Windows 意识到这些更改。

EDIT:我发现一个名为 Icon Tweaker 的程序似乎能够做到这一点,但它是闭源的,所以我不知道它是如何做到这一点的。 (图标调整器:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html)

EDIT:感谢安德斯的回复(见下文),我的工作正常。不过,我只是将我的工作 NSIS 代码放在这里,以防其他人需要它

ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000

$0寄存器用于存储Shell Icon Size的价值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics。然后我们增加该值并执行SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL),然后递减并重新发送。

EDIT:作为奖励,这可以用作在 Windows XP 上获得更大(Windows 7 大小)桌面图标的技巧。只需加倍Shell Icon Size价值与召唤SendMessage(不要执行恢复大小的第二次更改)


您只需运行以下命令行即可:

c:\Windows\System32\ie4uinit.exe -ClearIconCache

该命令行将删除您的缓存图标,无需重新启动资源管理器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使Windows刷新图标缓存 的相关文章

  • 以编程方式从 java 代码中查找 java.exe 的绝对路径

    如果我有一个由用户启动的 java jar 或类文件 假设在环境变量中设置了 java 路径 那么我如何从代码中找出 java exe javaw exe 的绝对路径文件正在启动 就像在 ubuntu 上一样 我们可以运行 which ja
  • 如何在Windows上分离“Git bash”中启动的“git gui”?

    例如 我开始 git bash 我导航到某个目录 I start git gui 我关闭控制台窗口或按 Ctrl C Git gui 的窗口消失了 即使我用过git gui disown 即使当我按 Ctrl C 时它不在前台 如何正确分离
  • Git 扩展 - 无法在 Windows 上推送到网络驱动器中的 git bare 存储库

    我正在 Windows 上学习 git 我已经安装了 Git 扩展 版本 2 47 3 并使用了它 我在我的 C 单元中创建了一个裸存储库 作为中央存储库 并在硬盘中的其他任何位置创建了个人存储库 我对硬盘中的这两个存储库进行提交 推送和拉
  • 在 Cygwin 软件包列表中找不到 Openssl

    这里说的是https github com joyent node wiki Building node js on Cygwin Windows https github com joyent node wiki Building nod
  • 在 Windows 上不使用 OpenSSL 从 pfx 文件或证书存储中提取私钥

    正如标题所示 我想在不使用 OpenSSL 或任何其他第三方工具的情况下导出我的私钥 如果我需要一个 cer文件或 pfx我可以通过 MMC 或 PowerShell 轻松导出这些文件pkiclient但我找不到获取私钥的方法 https
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 如何在批处理文件中回显换行符?

    如何从批处理文件输出中插入换行符 我想做类似的事情 echo hello nworld 这会输出 hello world Use echo hello echo echo world
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • Windows 目录永远不会包含临时文件的非 ASCII 字符?

    在 Windows 上使用 MinGW 7 3 0 由于 Windows 限制 Hunspell 无法从包含非 ASCII 字符的位置加载字典文件 我已经尝试了所有方法 1 现在我将文件复制到没有 ASCII 字符的路径 然后再将其交给 H
  • 在 Win7 登录屏幕上运行应用程序[重复]

    这个问题在这里已经有答案了 我想通过服务在 Windows 7 的登录屏幕上运行应用程序 我对此进行了长期研究并尝试了不同的方法 但不幸的是到目前为止还没有完全成功 我设法在当前登录用户的锁定屏幕上运行该应用程序 起初我认为这就是我基本上试
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 用于创建计划任务的 VBScript

    我正在尝试创建一个 VBScript 它创建一个批处理文件 然后创建一个计划任务来运行该批处理文件 到目前为止 我尝试过的所有操作都创建了批处理文件 但没有创建计划任务 并且我没有收到任何错误 这是我到目前为止所拥有的 Option Exp
  • Sencha Cmd 5 + Java 8 错误

    在我的 Windows 构建服务器上安装 Java 8 JDK 后 执行以下命令时遇到以下错误sencha命令 C gt sencha Error Registry key Software JavaSoft Java Runtime En
  • 如何在自托管 WCF 中获取多部分表单数据?

    我已经搜索了很长一段时间 但没有找到我要找的东西 我在 Windows 应用程序中自行托管了一个 http WCF 现在 在我的服务方法之一中 我需要接收一个文件和一些表单数据字段 在类似的问题中 情况要么发送一个文件 这是通过流数据然后转
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 在 Vista 上调用 RPC 时出现“不支持操作”

    我的应用程序使用 Microsoft RPC 进行进程间通信 当两个进程在同一台机器上运行并且一个进程尝试调用声明为 IDL 表示法 的方法时 error status t rpcMethod in pipe byte parameter
  • 为什么同一个curl命令在windows和linux下输出不同的东西?

    为什么同样的curl o file https www link com 命令输出不同的东西 例如 如果我运行命令curl o source txt https www youtube com playlist list PLIx6Fwnp
  • 无法访问127.0.0.1

    我不知道这种情况何时开始发生 但结果是 127 0 0 1 无法在任何地方的任何端口上工作 例如 浏览器显示无法连接 以下是我的研究结果 localhost COMPUTER NAME 和实际 IP 地址都工作正常 我的主机文件中没有什么特

随机推荐

  • FPDF 如何强制分页

    我正在使用 FPDF 1 7 将 TXT 文件转换为 PDF 我想在 PDF 产品中强制分页 使用 php 创建文本文件 并成功使用回车符 r 但我无法让换页符 f 出现在 PDF 中 是否有另一种方法可以通过更改原始文本文件或 php 代
  • 致命错误:无法重新声明类数据库

    我收到胎儿错误消息 致命错误 无法在第 3 行的 C wamp www pets new lib database php 中重新声明类数据库 require once lib message php require once lib us
  • 如何找到对象的键?

    我知道在 JavaScript 中 objects作为哈希值的两倍 但我一直无法找到内置函数来获取密钥 var h a b c d 我想要类似的东西 var k h keys k a c 自己编写一个函数来迭代项目并将键添加到我返回的数组中
  • 在 pandas 情节图例中显示非 ASCII(日语)字符

    如果我这样做 import pandas as pd pd DataFrame data nr random 2 2 columns u u 日本 plot Result So 显示 但不显示日本 经过一番谷歌搜索后 我发现了这个page这
  • 在 C# 中渲染图形

    除了 C 之外还有其他渲染图形的方法吗GDI and XNA 用于开发瓦片地图编辑器 SDL NET这是我喜欢的解决方案 如果您需要在其之上进行 3D 您可以使用Tao OpenGL 在其内部进行渲染 速度快 符合行业标准 SDL 即 并且
  • 在 Python 中接受 Cookie

    如何在 python 脚本中接受 cookie 尝试这个 import urllib2 import cookielib jar cookielib FileCookieJar cookies opener urllib2 build op
  • 从另一个 WPF 应用程序加载 WPF 应用程序程序集,出现错误:无法在同一 AppDomain 中创建多个 System.Windows.Application 实例

    场景 启动程序 WPF应用程序 gt gt Build 32bit Net 4 5 1 location D 加载程序 另一个 WPF 应用程序 gt gt Build 32bit Net 4 5 1 location D I m owne
  • SQL-将列中的值相加

    如何将 SQL 列中的值相加 我在 xampp 中设置了表格 并尝试将标题为 gross 的列中的所有值相加 SQL Server 或 MySQL select sum MyColumn as MyColumnSum from MyTabl
  • 为什么父元素不包含边距?

    当具有边距的元素包含在另一个元素中时 父元素不会始终包裹 包含该边距 很多事情都会导致父级包含子级的边距 border solid position absolute display inline block overflow auto 这
  • 如何使用下载的示例代码启动 Android 项目

    我对 android 还很陌生 刚刚完成环境设置并阅读了一些教程 然后我从网上获取了sdk示例 好的 我想问您的是 有没有办法在 Eclipse 中将示例作为项目启动 我的意思是单击 C 中的项目文件或解决方案文件 这是我解压代码的文件夹
  • SQL Server 2019 Express 安装失败,因为找不到 2017 驱动程序?

    我安装了SQL Server 2019的基本配置 最后报错 Oops 无法安装 SQL Server setup exe 退出代码 十进制 2068052310 错误描述 Microsoft 产品的安装包 找不到 SQL Server 的
  • 导致 INSERT 失败的触发器?可能的?

    在清理中这个答案我学到了一些关于TRIGGERMySQL 中的 s 和存储过程 但令人惊讶的是 虽然BEFORE INSERT and BEFORE UPDATE触发器可以修改数据 它们似乎不会导致插入 更新失败 即验证 在这种特殊情况下
  • 在 Django 1.5 中使用多个 AUTH_USER_MODEL 的正确方法是什么?

    我想为 django contrib auth 模块使用两种不同的模型 第一个是 Django 提供的默认用户模型 它完全适合管理员访问 组 权限等 但另一个是客户模型 与其他模型相比 它具有许多不同的属性 城市 区域设置 地址等 默认用户
  • 用于发布的构建后事件命令 (Visual Studio 2010)

    我在 Visual Studio 2010 中有一个项目 该项目具有以下构建后事件命令行 SET TARGET PROJECT TestMain IF NOT EXIST TargetDir IceBox XCOPY E I Y Solut
  • Android中如何翻转ImageView?

    我正在开发一个需要翻转的应用程序ImageView触摸并将控制权转移到第二个活动 请帮我 我尝试了很多 但没有成功 谢谢大家 这是一个很好的翻转图像库 https github com castorflex FlipImageView
  • 在react-admin中拥有多个dataProvider的正确方法是怎样的?

    我试图在反应管理项目中使用多个数据提供程序 但出现错误 Warning Missing translation for key dataProvider is not a function function console anonymou
  • 可以在 app.config 中为 .NET 命名空间添加别名吗?

    ASP NET 有一个功能 允许您在 web config 中声明隐式使用的命名空间
  • ruby 中将二进制数据转换为字符串

    我有一个包含字节数据的字符串 如何执行到 ascii 字符串的就地转换 处理二进制数据的另一种方法是字符串 unpack
  • Python 中的新运算符

    我们可以定义Python的内在运算符 如下所示here 只是出于好奇 我们可以定义新的运算符吗 or 如果是这样 那么我们可以定义三元条件运算符或旋转运算符 正如 minitech 所说 你无法定义新的运算符 但是检查一下这个允许你定义中缀
  • 使Windows刷新图标缓存

    我真的很喜欢 KDE SC 4 的氧气外观 我编写了一个程序将这些图标应用到 Windows 该程序是用 NSIS 编写的 目前几乎功能齐全 但是 我发现让 Windows 意识到图标更改的唯一方法是终止 explorer exe 删除图标