Bir sürü deneme ile, bu Kayıt Defteri değerinin biçimini aşağı yukarı çalışmayı başardım (bununla ilgili ayrıntılar için aşağıya bakın).
Bu PowerShell betiğini yaptım:
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
}
Kullanmak için bir .ps1
dosya olarak kaydedin ve PowerShell etiketi wiki'sinin Komut Dosyalarını Etkinleştirme bölümündeki talimatları izleyin . Daha sonra komut dosyasının içeriğini nokta kaynaklı olarak içe aktarabilirsiniz:
. ./bluelightmanagement.ps1
Ardından, sağladığı cmdlet benzeri işlevi kullanın:
Set-BlueLightReductionSettings -StartHour 7 -StartMinutes 0 -EndHour 21 -EndMinutes 15 -Enabled $true -NightColorTemperature 6000
Komutu çalıştırdığınızda mavi ışık azaltma sayfası açıksa Ayarlar uygulaması her şeyi (renk kaydırıcısı hariç) hemen günceller.
Biçim
- 4 sabit bayt - görünüşte tüm
CloudStore
değerler için ortak bir imza
- 64 bitlik bir
FILETIME
değer olarak ayarın son değiştirilme süresi (8 bayt, küçük endian)
- 8 daha fazla sabit bayt
- Baytlar
2
sonra 1
mavi ışık azaltma özelliği etkinleştirilirse, devre dışı bırakıldıysa gitti
- 3 daha fazla sabit bayt
- Başlangıç saatinin saati (1 bayt)
- 1 sabit bayt
- Başlangıç zamanının dakikaları (1 bayt)
- 4 sabit bayt
- Bitiş saatinin saati (1 bayt)
- 1 sabit bayt
- Bitiş zamanının dakikaları (1 bayt)
- 3 sabit bayt
- Kelvin'deki gece renk sıcaklığı, bazı garip ikili matematikten sonra (2 bayt)
- 7 sabit bayt
Renk sıcaklığı küçük endianda iki bayt olarak saklanır. Yüksek değerli olan, sıcaklığın 64'e bölünmesinin sonucunun tamsayı kısmıdır. Düşük değerli bayt, kalanın ikiyle çarpılması ve daha sonra 128'e eklenmesi demektir. Sıcaklığı baytlardan hesaplamak için yüksek baytı 64 ile çarpın. ve düşük bayt ile 128 arasındaki farkı ikiye böldüğünüzde elde ettiğiniz şeyi ekleyin.