Repository navigation
Releases: paulmann/windows-show-all-tray-icons
Release list
v8.6.3
Full Changelog: v8.6.2...v8.6.3
v7.0.3 «Phoenix» — Windows 11/10: все значки в системном трее
v7.0.3 «Phoenix» — Windows 11/10: все значки в системном трее
Полная переработка проекта: три издания, проверенные на Windows механизмы реестра,
тесты, CI и документация. Несовместимо с прежними 4.x/6.x — старые файлы сохранены
в корне и помечены как устаревшие (LEGACY-NOTICE.md).
Три издания
| Издание | Что это | Для чего |
|---|---|---|
GUI — TrayIconGuard.exe |
WPF-приложение (.NET 10), живёт в трее, следит за реестром событийно | Повседневная работа, «поставил и забыл» |
PowerShell — модуль ShowAllTrayIcons |
12 команд: вкл/выкл, управление отдельными значками, резервные копии, наблюдатель, автозапуск | Power users, развёртывание без участия человека |
BAT — Show-AllTrayIcons.bat |
автономный пакетный файл с меню и циклом наблюдения | Машины без PowerShell 7 |
Почему появилось «наблюдение»
Windows сбрасывает признак «значок закреплён» всякий раз, когда приложение заново
регистрирует свой значок в трее — после обновления, перезагрузки, перезапуска упавшей
программы. Разовая правка реестра поэтому «рассыпается» за несколько дней. TrayIconGuard
следит за HKCU\Control Panel\NotifyIconSettings через уведомления реестра и возвращает
значок на место за миллисекунды. В этом суть v7.
Основное
- Правильные механизмы реестра. Признак
IsPromotedпишется туда, где его использует
сама Windows —HKCU\Control Panel\NotifyIconSettings\{id}; политикиHideSCA*— в
...\Policies\Explorer. Прежние.reg-файлы правили несуществующие пути. - Слежение за треем. Уведомления
RegNotifyChangeKeyValue+ пауза-дребезг 400 мс,
резервный режим опроса, поиск новых значков, необязательный перезапуск проводника. - Управление отдельными значками по GUID или по маске имени файла; списки исключений —
приложения, которые должны оставаться скрытыми. - Резервная копия и возврат всей картины значков в JSON (схема v7).
- Готовность к развёртыванию:
-WhatIf/-Confirm, вывод JSON на стандартный поток,
устойчивые коды возврата (0/1/2/3), журналы во всех изданиях. - Автозапуск GUI или фонового наблюдателя через
HKCU Run.
Установка
# Вариант 1 — уже собранный EXE: скачайте ZIP из этого релиза и распакуйте.
# Он содержит собственную среду выполнения: ставить .NET не нужно.
# Вариант 2 — сборка из исходников
pwsh -NoProfile -File build.ps1 -Task PublishExe # self-contained по умолчанию
.\bat\Launch-TrayIconGuard.bat
# Вариант 3 — только PowerShell (без GUI)
Import-Module .\powershell\modules\ShowAllTrayIcons
Enable-AllTrayIcons -BackupТребования: Windows 10 1703+ / Windows 11 / Server 2019+. Для PowerShell-издания —
pwsh 7.6+. Права администратора не нужны: изменяются только ветви текущего пользователя.
Что исправлено по итогам трёх независимых проверок на Windows
Каждый дефект ниже найден замерами на живой системе и исправлен по первопричине:
- модуль не импортировался на Windows (
Add-Type, дублированиеusing, CS0105); - обёртка
Enable-AllTrayIcons.ps1обращалась к типу, не видимому из вызывающего скрипта; -FromBackupпередавал несуществующий параметр и не работал;- BAT-флаг
/restartне срабатывал никогда, а в вывод сыпался мусор отfindstr; - BAT считал строки значений корневого ключа значками: на здоровой машине сообщал
«Failed 3» и код 3 (ложный отказ для автоматизации); - лаунчер терял свой каталог из-за
shift, сдвигающего%0: не работало ни одно действие; - правило индекса
.ragraf/пропало из.gitignore; - в режиме
-AsJson -WhatIfтекст подтверждения попадал в стандартный поток вывода и
ломал разбор JSON; - тесты лаунчеров зависели от переменной
ComSpecи падали там, где её нет; - запуск GUI требовал .NET при каждом старте, если переменная
DOTNET_ROOTуказывала на
встроенную среду другого инструмента — теперь сборка по умолчанию автономна.
Проверено на Windows 11 (build 26300)
Pester: 91 passed / 0 failed / 0 skipped
PSScriptAnalyzer: 0 находок; BAT — ASCII/CRLF/заголовок OK
dotnet build: 0 ошибок / 0 предупреждений
PublishExe: автономный EXE 147,8 МБ
Package: ZIP 65,22 МБ
Содержимое ZIP
gui\TrayIconGuard.exe (автономный, 147,8 МБ) · bat\ (3 файла) · powershell\
(3 обёртки + модуль из 12 команд) · docs\ (5 документов) · installer\ ·
README.md · CHANGELOG.md · LICENSE.
Лицензия
MIT. Автор — Михаил Дейнекин; в корне сохранены прежние скрипты с пометкой об устаревании.
Full Changelog: v6.2...v7.0.3
v6.2 — Windows 11/10: показать все значки в системном трее
v6.2 — Windows 11/10: показать все значки в системном трее
Исторический релиз: фиксирует текущее состояние main проекта
windows-show-all-tray-icons
на момент публикации. Функциональные проверки в рамках выпуска не проводились —
релиз нужен для истории версий.
Что в релизе
| Файл | Версия | Назначение |
|---|---|---|
Enable-AllTrayIcons.ps1 |
6.2 | основной скрипт: полный набор методов, диагностика, откат, журнал, поддержка групповых политик |
Enable-AllTrayIcons.bat |
4.1 | облегчённый вариант без внешних зависимостей |
enable-all-tray-icons.reg |
— | простейший путь: правка реестра одним файлом |
disable-auto-hide.reg |
— | отключение автоматического скрытия значков |
README.md |
— | описание способов установки, параметров, проверки и отката |
LICENSE |
— | MIT |
Возможности PowerShell-скрипта 6.2 (Enterprise Edition)
- параметр
-Actionсо значениямиEnable,Disable,Status,Rollback,Backup; -AllUsers— настройка через групповые политики для всех пользователей (нужны права администратора);-RestartExplorer,-Diagnostic,-BackupRegistry,-LogPath,-Force;- поддержка
-WhatIf/-Confirmи режим-Update; - журналирование, проверка прав и контекста безопасности, резервная копия и откат к предыдущему состоянию;
- сброс настроек отдельных значков, а не только глобального значения
EnableAutoTray.
Быстрый старт
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/paulmann/windows-show-all-tray-icons/main/Enable-AllTrayIcons.ps1" -OutFile "Enable-AllTrayIcons.ps1"
.\Enable-AllTrayIcons.ps1 -Action EnableПроверка состояния и возврат к поведению Windows по умолчанию:
.\Enable-AllTrayIcons.ps1 -Action Status
.\Enable-AllTrayIcons.ps1 -Action DisableТребования
- Windows 10 или Windows 11;
- PowerShell 5.1 и новее (для полного режима нужны права администратора);
- изменяются только ветви
HKEY_CURRENT_USER; резервная копия создаётся перед правкой.
Совместимость
Полная история коммитов ветки main доступна в репозитории; исходный код распространяется по лицензии MIT.