答案1
虽然@harrymc 的回答允许你添加和删除程序实际任务栏,在本问题的上下文中(如屏幕截图所示),“任务栏”一词实际上是指 Windows 的“通知区域”(以前正式称为“系统托盘”或“systray”,现在非正式地称为“系统托盘”或“systray”)。
不幸的是,正如所说这里:
已经发生了变化通知区域让用户能够更好地控制哪些图标出现在任务栏. 所有通知图标现在默认隐藏,并且可见性无法通过编程控制。
(重点是我的)
我在此 MSDN 线程,这恰好是 OP 所问的同一个问题。
现在,由于问题没有明确这一点,为了完成:如果问题是关于控制由控制它的同一程序添加的图标,那么文档在这里。
最后一点:如果您不介意打破常规(从而进行黑客攻击),您可以使用以下任一方法来绕过这个限制:
- 截距到
dwMessage
Shell_NotifyIconA 函数在您想要控制图标的程序中,使用您自己制作的程序(这可能需要或不需要您将原始二进制文件作为您所制作程序的子程序来执行)。 explorer.exe
用您自己的二进制文件替换,复制其外观和功能。我知道这听起来很疯狂,但它可以用最不黑客的方式解决这个问题。
答案2
我发现最可靠的方法是这个小命令行工具: 固定到任务栏。
要在命令行中使用它来固定:
syspin "path/file.exe" c:5386
取消固定:
syspin "path/file.exe" c:5387
我在 Windows 10 20H2 上测试了该程序,使用上述参数运行良好。过去推荐的其他 PowerShell 脚本对我来说不起作用。
答案3
您正在寻找的注册表项IconStreams
位于HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify
我刚刚回答了一个此处重复问题
要点是,IconStreams
由于它是 ROT-13 编码并打包到 REG_BINARY 中,因此需要进行一些处理才能读取和编辑。因此您可以:
(1)保存并恢复整个值——甚至是整个TrayNotify
父容器,例如:
@rem save:
reg export "HKEY_CURRENT_USER\SOFTWARE\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" "TrayNotify1.reg"
@rem restore and restart explorer to re-read the key:
reg import "TrayNotify1.reg"
start /wait TASKKILL /F /IM explorer.exe && start explorer.exe
(2) 或者IconStreams
通过编程进行更改。我发现的大多数代码都是 Powershell:
Tim Mintner 也在 2011 年发表了一篇旧博客文章,其中他对格式进行部分逆向工程IconStreams 的