Mit ein paar Experimenten gelang es mir mehr oder weniger, das Format dieses Registrierungswerts zu ermitteln (siehe unten für Details dazu).
Ich habe dieses PowerShell-Skript erstellt:
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 }
Speichern Sie es als .ps1
Datei und befolgen Sie die Anweisungen im Abschnitt Aktivieren von Skripts des PowerShell-Tag-Wikis . Sie können dann den Inhalt des Skripts durch Dot-Sourcing importieren:
. ./bluelightmanagement.ps1
Und dann verwenden Sie die Cmdlet-ähnliche Funktion, die es bereitstellt:
Set-BlueLightReductionSettings -StartHour 7 -StartMinutes 0 -EndHour 21 -EndMinutes 15 -Enabled $true -NightColorTemperature 6000
Die Einstellungen-App aktualisiert sogar alles (außer den Farbregler) sofort, wenn Sie die Blaulichtreduzierungsseite geöffnet haben, wenn Sie den Befehl ausführen.
Das Format
- 4 konstante Bytes - scheinbar eine Signatur, die allen
CloudStore
Werten gemeinsam ist - Der zuletzt geänderte Zeitpunkt der Einstellung als 64-Bit-
FILETIME
Wert (8 Byte, Little Endian) - 8 weitere konstante Bytes
- Die Bytes sind
2
dann,1
wenn die Blaulicht-Reduzierungsfunktion aktiviert ist, einfach weg, wenn sie deaktiviert ist - 3 weitere konstante Bytes
- Die Stunde der Startzeit (1 Byte)
- 1 konstantes Byte
- Die Minuten der Startzeit (1 Byte)
- 4 konstante Bytes
- Die Stunde der Endzeit (1 Byte)
- 1 konstantes Byte
- Die Minuten der Endzeit (1 Byte)
- 3 konstante Bytes
- Die nächtliche Farbtemperatur in Kelvin, nach einigen seltsamen binären Berechnungen (2 Bytes)
- 7 konstante Bytes
Die Farbtemperatur wird in Little Endian als zwei Byte gespeichert. Der Wert mit dem höchsten Wert ist der ganzzahlige Teil des Ergebnisses der Division der Temperatur durch 64. Das Byte mit dem niedrigen Wert ist der Rest, der mit zwei multipliziert und dann zu 128 addiert wird. Um die Temperatur aus den Bytes zu berechnen, multiplizieren Sie das High-Byte mit 64 und addieren Sie, was Sie erhalten, wenn Sie die Differenz zwischen dem niedrigen Byte und 128 durch zwei teilen.