Windows 10: Скрыть кнопки из Центра уведомлений

В своей заметке «Переназначить кнопку из Центра уведомлений» я описал способ для полного скрытия всех кнопок «Быстрых действий». Вчера я на виртуальной машине поставил Windows 10 build 19041 и, выяснилось, что данный способ там уже не работает! Оказалось, что примерно с версии 18277 были изменены настройки и место их хранения.
Пришлось добавить в мой скрипт для твика условие проверки версии и билда. Правда я только вчера понял, что в PowerShell операторы условия сильно отличаются от привычных мне в C++ или C#. Ниже я приведу фрагмент скрипта для изменения этой настройки через реестр.

# [018]. Hide Quick actions bar from Notification area
# https://dentnt.trmw.ru/?p=16436

  Write-Output "*** [018]. Hide Quick actions bar from Notification area"
  $build = [System.Environment]::OSVersion.Version.Build
  write "Build is $build"
  if ((Confirmed) -and ($build -lt 18277))
  {
    $regPath = "HKCU:\Control Panel\Quick Actions\Pinned"

    try
    {
      Remove-Item -Path $regPath -Recurse #-ErrorAction Ignore
      New-Item -Path $regPath -Force -ErrorAction Stop | out-null
    }
    catch [System.Security.SecurityException]
    {
      Write-Warning $_.Exception.Message
    }
    catch [System.Management.Automation.ItemNotFoundException]
    {
      Write-Verbose $_.Exception.Message
    }
  }
  else
  {
    Write-Output "ELSE: Build: $build (Greater or equal than 18277)"
    $regPath = "HKCU:\Control Panel\Quick Actions\Control Center\Unpinned"
    Remove-Item -Path $regPath -Recurse #-ErrorAction Ignore
    New-Item -Path $regPath -Force -ErrorAction Stop | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.WiFi” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.QuietHours” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.Location” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.Connect” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.BlueLightReduction” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.Project” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.ScreenClipping” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.TabletMode” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.Vpn” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.AvailableNetworks” -Value $null -PropertyType “Binary” -Force | out-null
    New-ItemProperty -Path $regPath -Name “Microsoft.QuickAction.AllSettings” -Value $null -PropertyType “Binary” -Force | out-null
  }
  Write-Output "018.Done"

В самом первом условии Confirmed — это моя функция для проверки нажатия кнопки «y/n/a». Если нажата y или a , то условие будет выполнено. Там же я добавил проверку билда. Условие будет выполнено, если билд меньше чем 18277. В этом случае используются старые настройки. Т.е мы просто очищаем все значения ветки HKEY_CURRENT_USER\SOFTWARE\Microsoft\Shell\ActionCenter\Quick Actions\Pinned.
Иначе (если же билд больше и равен 18277), то мы изменяем другую ветку реестра:
HKEY_CURRENT_USER\Control Panel\Quick Actions\Control Center\Unpinned

Для удобства я её сначала очистил, а только потом создал в ней новые значения.
Вообще эти значения хранятся здесь:
HKEY_CURRENT_USER\Control Panel\Quick Actions\Control Center\QuickActionsStateCapture
Там есть строковый параметр Toggles. Для нас проблема в том, что его не так легко отпарсить, проще всё обнулить и создать заново. Вот значение этого параметра:

Toggles,Microsoft.QuickAction.TabletMode:false,Microsoft.QuickAction.Location:false,Microsoft.QuickAction.BlueLightReduction:false,Microsoft.QuickAction.AllSettings:false,Microsoft.QuickAction.AvailableNetworks:false,Microsoft.QuickAction.Connect:false,Microsoft.QuickAction.Project:false,Microsoft.QuickAction.Vpn:false,Microsoft.QuickAction.QuietHours:false,Microsoft.QuickAction.ScreenClipping:false

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

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

 



Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments