Skip to content

Releases: paulmann/windows-show-all-tray-icons

v8.6.3

Choose a tag to compare

@github-actions github-actions released this 16 Oct 12:57

Full Changelog: v8.6.2...v8.6.3

v7.0.3 «Phoenix» — Windows 11/10: все значки в системном трее

Choose a tag to compare

@github-actions github-actions released this 13 Oct 20:59

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: показать все значки в системном трее

Choose a tag to compare

@paulmann paulmann released this 13 Oct 15:54

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.