Com várias experiências, consegui calcular mais ou menos o formato desse valor do Registro (veja abaixo os detalhes).
Eu criei este script do 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
}
Para usá-lo, salve-o como um .ps1
arquivo e siga as instruções na seção Habilitando scripts do wiki de tags do PowerShell . Você pode importar o conteúdo do script através da fonte de pontos:
. ./bluelightmanagement.ps1
E use a função semelhante ao cmdlet que ela fornece:
Set-BlueLightReductionSettings -StartHour 7 -StartMinutes 0 -EndHour 21 -EndMinutes 15 -Enabled $true -NightColorTemperature 6000
O aplicativo Configurações até atualiza tudo (exceto o controle deslizante de cores) imediatamente se você tiver a página de redução de luz azul aberta ao executar o comando.
O formato
- 4 bytes constantes - aparentemente uma assinatura comum a todos os
CloudStore
valores
- O horário da última modificação da configuração como um
FILETIME
valor de 64 bits (8 bytes, little endian)
- 8 bytes mais constantes
- Os bytes
2
, 1
se o recurso de redução de luz azul estiver ativado, desaparecerão se estiver desativado
- 3 bytes mais constantes
- A hora da hora de início (1 byte)
- 1 byte constante
- Minutos da hora de início (1 byte)
- 4 bytes constantes
- Hora da hora final (1 byte)
- 1 byte constante
- Minutos da hora de término (1 byte)
- 3 bytes constantes
- A temperatura da cor durante a noite em Kelvin, depois de um cálculo binário estranho (2 bytes)
- 7 bytes constantes
A temperatura da cor é armazenada como dois bytes em little endian. O valor alto é a parte inteira do resultado da divisão da temperatura por 64. O byte de valor baixo é o restante multiplicado por dois e depois adicionado a 128. Para calcular a temperatura dos bytes, multiplique o byte alto por 64 e adicione o que você obtém ao dividir por dois a diferença entre o byte baixo e 128.