Với một loạt các thử nghiệm, tôi đã quản lý ít nhiều tìm ra định dạng của giá trị Registry đó (xem bên dưới để biết chi tiết về điều đó).
Tôi đã tạo tập lệnh PowerShell này:
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
}
Để sử dụng nó, hãy lưu nó dưới dạng .ps1
tệp và làm theo các hướng dẫn trong phần Kích hoạt tập lệnh của wiki thẻ PowerShell . Sau đó, bạn có thể nhập nội dung của tập lệnh bằng cách tìm nguồn cung cấp:
. ./bluelightmanagement.ps1
Và sau đó sử dụng hàm giống cmdlet mà nó cung cấp:
Set-BlueLightReductionSettings -StartHour 7 -StartMinutes 0 -EndHour 21 -EndMinutes 15 -Enabled $true -NightColorTemperature 6000
Ứng dụng Cài đặt thậm chí cập nhật mọi thứ (trừ thanh trượt màu) ngay lập tức nếu bạn mở trang giảm ánh sáng màu xanh khi bạn chạy lệnh.
Các định dạng
- 4 byte không đổi - dường như là một chữ ký chung cho tất cả các
CloudStore
giá trị
- Thời gian được sửa đổi lần cuối của cài đặt dưới dạng
FILETIME
giá trị 64 bit (8 byte, endian nhỏ)
- Thêm 8 byte không đổi
- Các byte
2
sau đó 1
nếu tính năng giảm ánh sáng xanh được bật, sẽ biến mất nếu nó bị tắt
- Thêm 3 byte không đổi
- Giờ bắt đầu (1 byte)
- 1 byte không đổi
- Thời gian bắt đầu là phút (1 byte)
- 4 byte không đổi
- Giờ kết thúc (1 byte)
- 1 byte không đổi
- Số phút của thời gian kết thúc (1 byte)
- 3 byte không đổi
- Nhiệt độ màu vào ban đêm ở Kelvin, sau một số phép toán nhị phân kỳ lạ (2 byte)
- 7 byte không đổi
Nhiệt độ màu được lưu trữ dưới dạng hai byte theo ít endian. Giá trị cao là phần nguyên của kết quả của việc chia nhiệt độ cho 64. byte giá trị thấp là phần còn lại nhân với hai, sau đó thêm vào 128. Để tính nhiệt độ từ các byte, nhân byte cao với 64 và thêm những gì bạn nhận được khi bạn chia cho hai mức chênh lệch giữa byte thấp và 128.