Windows 11,任务栏角落溢出,显示所有托盘图标

Windows 11,任务栏角落溢出,显示所有托盘图标

在 Windows 11 中似乎没有(标准/用户友好)设置始终显示所有托盘图标的选项(任务栏角落溢出,现在在“设置”中这样称呼)。它只允许您逐个切换它们:

在此处输入图片描述

显然,这远非理想。

是否有其他方法可以让所有托盘图标始终可见,这样就不会隐藏任何图标,就像在 Windows 10 和更早版本中可以做到的那样?也许有一个注册表项可以控制它,或者有一个“隐藏”的 shell 命令来打开“旧”设置对话框?

答案1

这是一个解决方法:

  • 单击任务栏中的“开始”或“搜索”图标
  • 键入 cmd,右键单击命令提示符,然后单击以管理员身份运行
  • 复制并粘贴以下内容:explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}
  • 按 Enter 键
  • 选择“始终在任务栏上显示所有图标和通知”
  • 单击“确定”

如果复选框“始终显示所有图标...”显示为灰色,我还不完全确定是什么修复了它,但看起来更改 Regedit 中的 EnableAutoTray 值有所帮助。

为此,请打开 Regedit,转到此处:

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]

然后将 EnableAutoTray 设置为 1

这似乎需要在每次启动时完成,因此您可以使用右键单击、新建、快捷方式在桌面上创建快捷方式,然后使用上面的命令。

更新:起初,我不喜欢使用个性化 -> 任务栏 -> “任务栏角落溢出” 单独选择每个应用程序的想法,但最终,它并没有那么糟糕。每当有新应用程序安装到溢出中时,您都可以使用个性化设置来添加它。这有点烦人,但它有效。

2022 年更新:请参阅下面 Grx70 的评论,他写道:您可以通过从弹出窗口中选择溢出的图标并将其移动到托盘栏上来拖放它们

答案2

我的“显示全部”复选框无法使用,以下是在 Windows 10 Home > 11 Home 升级机器上出现的问题。

打开 Regedit,转到此处:

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer]

查找 EnableAutoTray 并将值从 0 设置为 1

然后运行这个cmd:

explorer shell:::{05d7b0f4-2121-4eff-bf6b-ed3f69b894d9}

显示所有项目的复选框应该是可交互的。

答案3

我使用注册表差异工具并发现了这个注册表值:

HKEY_CURRENT_USER\Control Panel\NotifyIconSettings\<uint64>\IsPromoted

该值在控制面板中设置之前不存在。手动更改它会产生预期的效果,但祝你好运,因为不透明数字列表uint64...不过,我们可以自动执行此操作!我在 GPLv3 下创建了以下脚本。它在我的 GitHub 上,其中还有更多文档。

import itertools
import winreg


def main():
    access1 = winreg.KEY_READ
    access2 = winreg.KEY_SET_VALUE | winreg.KEY_QUERY_VALUE
    key_path = r"Control Panel\NotifyIconSettings"
    super_key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, key_path, access=access1)
    for index in itertools.count():
        try:
            name = winreg.EnumKey(super_key, index)
        except OSError:
            break  # no more keys
        subkey = winreg.OpenKey(super_key, name, access=access2)
        examine(name, subkey)
        winreg.CloseKey(subkey)
    winreg.CloseKey(super_key)
    # noinspection PyUnboundLocalVariable
    print(f"Done for {index} keys")


def examine(name, subkey):
    try:
        value, type_ = winreg.QueryValueEx(subkey, "IsPromoted")
        if value == 1 and type_ == winreg.REG_DWORD:
            return  # already correct
    except FileNotFoundError:
        pass  # new
    winreg.SetValueEx(subkey, "IsPromoted", 0, winreg.REG_DWORD, 1)
    try:
        value, _ = winreg.QueryValueEx(subkey, "ExecutablePath")
    except FileNotFoundError:
        value = "unknown path"
    print(f"Set IsPromoted=1 for {name} ({value})")


if __name__ == "__main__":
    main()

相关内容