Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 81
Благодарности: 2

Профиль | Отправить PM | Цитировать


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

Рекомендации помогли. Для потомков оставляю готовое решение, как вернуть уведомления в случае, если их выключили, а приложения в списке нет.
Сценарий 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, 05-09-2022 в 15:44. Причина: дополнил


Отправлено: 15:38, 05-09-2022 | #6