Показать полную графическую версию : [решено] Не появляется классическое приложение в списке «Уведомления и действия»
Teodorrrro
08-06-2022, 17:52
Всем привет!
Имеется приложение, корпоративный мессенджер eXpress. Есть две машины с одинаковой сборкой Windows 10:
https://i.imgur.com/EZjrr7q.png
Антивирусов нет, CCleaner и прочей дряни нет.
На одной машине, если запретить eXpress отправлять уведомления, их можно снова включить по такому пути:
Параметры > Система > Уведомления и действия > eXpress > Вкл.
На другой машине eXpress вообще отсутствует в списке «Уведомления и действия». И поэтому, если запретить уведомления eXpress, включить их снова никак нельзя. Помогает только создать нового пользователя — для него уведомления работают. Но в списке «Уведомления и действия» приложения у нового пользователя тоже нет.
Прошу подсказать, почему приложение может не попасть в список «Уведомления и действия» и можно ли его как-то в этот список принудительно включить?
Спасибо.
Teodorrrro
22-06-2022, 13:43
Ау, тут есть кто живой?
Прошу подсказать, почему приложение может не попасть в список «Уведомления и действия» и можно ли его как-то в этот список принудительно включить? »
Я бы попробовал сравнить вот этот раздел реестра:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Notifications\Settings
Нашёл бы ветку этого приложения на исправной системе, а после подумал бы что делать:
Имеется приложение, корпоративный мессенджер eXpress »
пишут, что это хранится в sqlite-базе C:\Users\<user>\AppData\Local\Microsoft\Windows\Notifications\wpndatabase.db
Наверное, можно через редактор добавить или скриптом (таблица HandlerAssets).
пишут, что это хранится в sqlite-базе »
Угу, здесь (https://docs.microsoft.com/en-us/answers/questions/314561/enforcing-notifications-from-specific-applications.html) приводится powershell-сценарий работы как с БД, так и с реестром - в конкретном примере оперируют "powershell.exe" для уведомлений.
Teodorrrro
05-09-2022, 15:38
Всем большое спасибо!
Рекомендации помогли. Для потомков оставляю готовое решение, как вернуть уведомления в случае, если их выключили, а приложения в списке нет.
Сценарий 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
Также поступила информация, что на windows 10/11, если не работают уведомления приложения, для него можно попробовать включить запуск в режиме совместимости с Windows 7. Тогда приложение перестаёт использовать Windows Notifications Framework для отправки уведомлений, и они начинают работать.
Это так?
У меня было так, что были отключены Фоновые приложения в Windows 10. Из-за этого whatsapp и Wechat и не получали сообщений, и не было уведомлений, пока свёрнуты. Установил галочку, и всё заработало.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.