Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 10 (http://forum.oszone.net/forumdisplay.php?f=118)
-   -   [решено] Не появляется классическое приложение в списке «Уведомления и действия» (http://forum.oszone.net/showthread.php?t=351348)

Teodorrrro 08-06-2022 17:52 2986396

Не появляется классическое приложение в списке «Уведомления и действия»
 
Всем привет!

Имеется приложение, корпоративный мессенджер eXpress. Есть две машины с одинаковой сборкой Windows 10:

Антивирусов нет, CCleaner и прочей дряни нет.
На одной машине, если запретить eXpress отправлять уведомления, их можно снова включить по такому пути:
Код:

Параметры > Система > Уведомления и действия > eXpress > Вкл.
На другой машине eXpress вообще отсутствует в списке «Уведомления и действия». И поэтому, если запретить уведомления eXpress, включить их снова никак нельзя. Помогает только создать нового пользователя — для него уведомления работают. Но в списке «Уведомления и действия» приложения у нового пользователя тоже нет.

Прошу подсказать, почему приложение может не попасть в список «Уведомления и действия» и можно ли его как-то в этот список принудительно включить?

Спасибо.

Teodorrrro 22-06-2022 13:43 2987091

Ау, тут есть кто живой?

NickM 22-06-2022 15:10 2987100

Цитата:

Цитата Teodorrrro
Прошу подсказать, почему приложение может не попасть в список «Уведомления и действия» и можно ли его как-то в этот список принудительно включить? »

Я бы попробовал сравнить вот этот раздел реестра:
Код:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings
Нашёл бы ветку этого приложения на исправной системе, а после подумал бы что делать:
Цитата:

Цитата Teodorrrro
Имеется приложение, корпоративный мессенджер eXpress »


Sham 22-06-2022 15:16 2987102

пишут, что это хранится в sqlite-базе C:\Users\<user>\AppData\Local\Microsoft\Windows\Notifications\wpndatabase.db
Наверное, можно через редактор добавить или скриптом (таблица HandlerAssets).

NickM 22-06-2022 15:28 2987106

Цитата:

Цитата Sham
пишут, что это хранится в sqlite-базе »

Угу, здесь приводится powershell-сценарий работы как с БД, так и с реестром - в конкретном примере оперируют "powershell.exe" для уведомлений.

Teodorrrro 05-09-2022 15:38 2991812

Всем большое спасибо!

Рекомендации помогли. Для потомков оставляю готовое решение, как вернуть уведомления в случае, если их выключили, а приложения в списке нет.
Сценарий Powershell:
Код:

###Включение отключённых уведомлений. Автор: Robert Polenius Andersson, модифицировал teodorrrro@gmail.com
###Сценарий включит уведомления любого приложения, использующего Windows Notification framework
###Требования: модуль powershell PSSQLite
   
 try{
        #скачиваем и устанавливаем менеджер пакетов, который установит нам модуль PSSQLite
        Install-PackageProvider  -Name NuGet -MinimumVersion 2.8.5.201 -Force
        #устанавливаем модуль powershell PSSQLite
        Install-Module -Name PSSQLite -Force
                 
        ##Работа с БД
    #Импортируем модуль SQLite
    Import-Module PSSQLite
   
    #Устанавливаем переменную DBPath
    $DatabasePath = "$env:LOCALAPPDATA\Microsoft\Windows\Notifications\wpndatabase.db"
   
    #Определяем запрос выборки (!! имя приложения смотрим в реестре в разделе HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings)
    $SelectQuery = "
    SELECT HS.HandlerId, HS.SettingKey, HS.Value
    FROM NotificationHandler AS NH
    INNER JOIN HandlerSettings AS HS ON NH.RecordId = HS.HandlerID
    WHERE NH.PrimaryId LIKE '%ИМЯ_ПРИЛОЖЕНИЯ'
    AND HS.SettingKey = 's:toast'
    "
   
    #Инициируем запрос выборки
    $NotificationSettings = Invoke-SqliteQuery -DataSource $DatabasePath -Query $SelectQuery
   
    #Если настройка уведомлений в БД неверна
    if($NotificationSettings.Value -ne 1){
        #Создаем запрос на обновление БД
        $UpdateQuery = "
        UPDATE HandlerSettings
        SET Value = 1
        WHERE HandlerId = '$($NotificationSettings.HandlerId)' AND SettingKey = 's:toast'
        "
        #Инициируем запрос на обновление БД
        Invoke-SqliteQuery -DataSource $DatabasePath -Query $UpdateQuery
    }
   
    ##Работа с реестром
    #Определяем путь в реестре для приложения
    $RegistryPath = (Get-ChildItem -Recurse -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings" | Where-Object -Property Name -Like '*ИМЯ_ПРИЛОЖЕНИЯ*' | Select-Object -ExpandProperty Name).Replace('HKEY_CURRENT_USER','HKCU:')
   
    #Получаем текущее значение Enabled
    $Enabled = Get-ItemProperty -Path $RegistryPath -Name "Enabled" | Select-Object -ExpandProperty Enabled
   
    #Если значение неверное
    if($Enabled -ne 1){
        #Обновляем реестр
        Set-ItemProperty -Path $RegistryPath -Name "Enabled" -Value 1 -Force
    }
        #Если всё ок, возвращаем консоли ноль
    return 0
 }catch{
        #Если ошибка, пишем лог в папку пользователя и возвращаем ошибку
    $LogFile = "$env:LOCALAPPDATA\restored_Notifications.log"
    if(!(Test-Path $LogFile -ErrorAction SilentlyContinue)){
        New-Item -Path $LogFile
    }
    "$(Get-Date) | Сценарий исправления | Ошибка: $($_)" | Out-File $LogFile -Append
    return $_
 }

И батник для запуска:
Код:

@echo off
REM Разрешаем запуск сценариев Powershell в операционной системе
powershell Set-ExecutionPolicy RemoteSigned
REM Запускаем сценарий, исцеляющий уведомления (проверяем имя файла!)
powershell -file restore_app_notifications.ps1
pause

По окончании работы сценария уведомления начнут работать сразу, перезагрузки и выхода из системы не потребуется.

Teodorrrro 07-09-2022 17:01 2992007

Также поступила информация, что на windows 10/11, если не работают уведомления приложения, для него можно попробовать включить запуск в режиме совместимости с Windows 7. Тогда приложение перестаёт использовать Windows Notifications Framework для отправки уведомлений, и они начинают работать.
Это так?

raykex 23-10-2023 13:11 3018712

У меня было так, что были отключены Фоновые приложения в Windows 10. Из-за этого whatsapp и Wechat и не получали сообщений, и не было уведомлений, пока свёрнуты. Установил галочку, и всё заработало.


Время: 01:51.

Время: 01:51.
© OSzone.net 2001-