За допомогою експерименту мені вдалося більш-менш опрацювати формат цього значення реєстру (детальніше про це див. Нижче).
Я зробив цей сценарій PowerShell:
Function Set-BlueLightReductionSettings {
[CmdletBinding()]
Param (
[Parameter(Mandatory=$true)] [ValidateRange(0, 23)] [int]$StartHour,
[Parameter(Mandatory=$true)] [ValidateSet(0, 15, 30, 45)] [int]$StartMinutes,
[Parameter(Mandatory=$true)] [ValidateRange(0, 23)] [int]$EndHour,
[Parameter(Mandatory=$true)] [ValidateSet(0, 15, 30, 45)] [int]$EndMinutes,
[Parameter(Mandatory=$true)] [bool]$Enabled,
[Parameter(Mandatory=$true)] [ValidateRange(1200, 6500)] [int]$NightColorTemperature
)
$data = (2, 0, 0, 0)
$data += [BitConverter]::GetBytes((Get-Date).ToFileTime())
$data += (0, 0, 0, 0, 0x43, 0x42, 1, 0)
If ($Enabled) {$data += (2, 1)}
$data += (0xCA, 0x14, 0x0E)
$data += $StartHour
$data += 0x2E
$data += $StartMinutes
$data += (0, 0xCA, 0x1E, 0x0E)
$data += $EndHour
$data += 0x2E
$data += $EndMinutes
$data += (0, 0xCF, 0x28)
$tempHi = [Math]::Floor($NightColorTemperature / 64)
$tempLo = (($NightColorTemperature - ($tempHi * 64)) * 2) + 128
$data += ($tempLo, $tempHi)
$data += (0xCA, 0x32, 0, 0xCA, 0x3C, 0, 0)
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\Cache\DefaultAccount\$$windows.data.bluelightreduction.settings\Current' -Name 'Data' -Value ([byte[]]$data) -Type Binary
}
Щоб використовувати його, збережіть його як .ps1
файл та дотримуйтесь інструкцій у розділі Включення сценаріїв у вікі тегів PowerShell . Потім ви можете імпортувати вміст сценарію за допомогою точкового пошуку:
. ./bluelightmanagement.ps1
А потім використовуйте функцію cmdlet, яку вона постачає:
Set-BlueLightReductionSettings -StartHour 7 -StartMinutes 0 -EndHour 21 -EndMinutes 15 -Enabled $true -NightColorTemperature 6000
Додаток "Налаштування" навіть оновлює все (крім повзунка кольорів) негайно, якщо під час запуску команди відкрита сторінка зменшення синього світла.
Формат
- 4 постійних байти - здавалося б, підпис, спільний для всіх
CloudStore
значень
- Остання зміна часу налаштування як 64-бітове
FILETIME
значення (8 байт, мало ендіан)
- Ще 8 постійних байтів
- Байти
2
потім , 1
якщо синє світло функція шумозаглушення включена, тільки що , якщо він відключений
- Ще 3 постійних байти
- Година часу початку (1 байт)
- 1 постійний байт
- Хвилини часу початку (1 байт)
- 4 постійні байти
- Година часу закінчення (1 байт)
- 1 постійний байт
- Хвилини часу закінчення (1 байт)
- 3 постійних байта
- Нічна кольорова температура в Кельвіні після дивної двійкової математики (2 байти)
- 7 постійних байтів
Колірна температура зберігається у вигляді двох байтів у маленькому ендіані. Однозначне - це ціла частина результату ділення температури на 64. Байт низького значення - решта, помножена на два, потім додана до 128. Для обчислення температури з байтів помножте високий байт на 64 і додайте те, що ви отримаєте, розділивши вдвічі різницю між низьким байтом і 128.