रजिस्ट्री के माध्यम से विंडोज क्रिएटर्स को नाइट लाइट अपडेट करें


13

विंडोज 10 (प्रो) क्रिएटर्स अपडेट में नई नाइट लाइट सुविधा को रजिस्ट्री के माध्यम से कैसे कॉन्फ़िगर किया जा सकता है?

मैं अपने कॉन्फ़िगरेशन प्रबंधन उपकरण (बावर्ची) का उपयोग करते समय नए / अपडेट किए गए इंस्टॉलेशन को ऑटो कॉन्फ़िगर करना चाहूंगा। Sysinternals Process Monitor के माध्यम से सिस्टम इंस्पेक्शन एक बाइनरी Dataकुंजी को गहराई से अपडेट होने के बारे में दिखाता है HKCU\Software\Microsoft\Windows\CurrentVersion\CloudStore\Cache\DefaultAccount\$$windows.data.bluelightreduction.settings\Current, लेकिन यह एक बड़ा REG_BINARY बूँद है और बहुत उपयोगी नहीं है।

नाइट लाइट फीचर को कॉन्फ़िगर करने के लिए एक अलग रजिस्ट्री, पॉवरशेल या अन्य ऑटोमेशन फ्रेंडली तरीके पर मदद करना सबसे अधिक सराहनीय होगा!


इसका बेहतर पता लगाने के लिए RegfromApp का उपयोग करें । यह .reg फ़ाइल उत्पन्न करता है। शायद यह इसे डिकोड कर सकता है
Magicandre1981

सुझाव के लिए धन्यवाद @ Magicandre198। प्रक्रिया मॉनिटर मुझे सटीक कुंजी और मूल्य देता है जिसे बदला जा रहा है। समस्या यह है कि कुंजी एक द्विआधारी है और उस डेटा कुंजी के निर्माण के लिए कोई डिकोडिंग प्रलेखन उपलब्ध नहीं है। विचाराधीन कायरतापूर्ण मार्ग को देखते हुए, यह एक ऐसा खंड नहीं हो सकता है जो प्रत्यक्ष संशोधन के लिए अभिप्रेत है (शायद एक कैश्ड सेटिंग स्थान)। मैं उम्मीद कर रहा हूं कि किसी को नई नाइट लाइट सुविधा के प्रबंधन पर एक लाइन है क्योंकि अब तक इस पर ज्यादा जानकारी नहीं है।
डेविड एफ। सेवरस्की

जैसा कि मैंने कहा, Regfromapp का उपयोग करें, यह हर परिवर्तन के लिए .reg फ़ाइलें उत्पन्न करता है।
Magicandre1981

1
हम यहां क्रॉस-उद्देश्यों पर बात कर रहे हैं। :) मुझे पता है कुंजी और कुंजी की सामग्री को समायोजित किया जा रहा है। यह बिना किसी दस्तावेज के बस एक अजीब सी बूँद है। मैंने github.com/jaapbrasser/SedenScripts/tree/master/Set-BlueLight पाया है जो फीचर को PS इंटरफ़ेस प्रदान करने के लिए हैकिंग का एक सा काम करता है, लेकिन यह स्पष्ट नहीं है कि विभिन्न उपकरणों को एक साथ कैसे जोड़ा जाए। मैं वास्तव में प्रलेखन (और एक इंटरफ़ेस) की तलाश कर रहा हूं कि इस बाइनरी स्ट्रिंग को एक साथ कैसे रखा जाए।
डेविड एफ सेवरस्की

जवाबों:


12

प्रयोग के एक समूह के साथ, मैं उस रजिस्ट्री मान के प्रारूप को अधिक या कम करने में कामयाब रहा (उस पर विवरण के लिए नीचे देखें)।

मैंने यह 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 के बीच के अंतर से दो भाग मिलते हैं, तो उसे जोड़ें।


मैं केवल रात की रोशनी में टॉगल करने के लिए एक स्क्रिप्ट लिखने की कोशिश कर रहा हूं। यदि मैं गलत नहीं हूँ, तो बाइट्स 20 और 21 को यह बताना चाहिए कि क्या सुविधा चालू है (आपके विवरण के अनुसार कम से कम 4 + 8 + 8 = 20) लेकिन जब मैं रजिस्ट्री प्रविष्टि का उपयोग regedit को देखता हूं, तो मैं नहीं करता बाइट्स 21 परिवर्तन देखें, मुझे उस मामले में कोई भी बदलाव नहीं दिखाई दे रहा है। मैंने यह सुनिश्चित किया है कि मैं F5 के साथ regedit विंडो को ताज़ा करता हूं और यहां तक ​​कि यूआई से नाइट लाइट फीचर को टॉगल करने के बाद इसे फिर से खोल दिया। क्या आपको अंदाजा है कि क्या चल रहा है?
गाबिक

1
मैंने यह पाया है कि NirSoft nirsoft.net/articles/find_modified_time_registry_key.html से इस उपयोगिता का उपयोग करते हुए , कि आपके द्वारा निर्दिष्ट रजिस्ट्री कुंजी को तब संशोधित नहीं किया जा रहा है जब मैं रात में प्रकाश सुविधा को सक्रिय और निष्क्रिय करता हूं। शायद Microsoft ने इसे अंतिम अपडेट में बदल दिया?
गाबिक

1
@ Gaboik1 यह रजिस्ट्री मान इस तरह का अजीब है कि इसका लेआउट बहुत बदल जाता है; जिस प्रारूप का मैंने वर्णन किया है वह सिर्फ एक है जो जरूरी नहीं कि केवल एक ही काम करता है। मुझे इस मान से डेटा को लगातार पढ़ने के तरीके का पता नहीं है, लेकिन मैंने विंडोज 10 1709 पर परीक्षण किया और इस स्क्रिप्ट का उपयोग करके सेटिंग अभी भी काम कर रही है।
बेन एन

इसे .net में लिखते हुए, मुझे वास्तव में शेड्यूल (बनाम आपका कोड, जो सूर्योदय / सूर्यास्त के द्वारा लगता है) का उपयोग करने के लिए मिला था मुझे CA 14 0E से ठीक पहले 0xC2,0x0A, 0x00 जोड़ना था। तब यह ट्रिगर होता है और इसे घंटों के आधार पर सेट करता है। अन्यथा काम हो गया। 1709 पर।
मागेर्ज़

1
आज के रूप में, अंतिम अद्यतन, यह अब काम नहीं करता है। रजिस्ट्री कुंजी संशोधित है \Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\DefaultAccount\Current\default$windows.data.bluelightreduction.settings\windows.data.bluelightreduction.settings\Dataऔर दुख की बात है कि द्विआधारी प्रारूप समान नहीं है।
जुलिएनजी

2

कई घंटे के प्रयोग और वॉयला:
कैसे Win10 1903 में / बंद नाइट लाइट चालू करने के लिए

रजिस्ट्री कुंजी है :

HKCU\Software\Microsoft\Windows\CurrentVersion\CloudStore\Store\DefaultAccount\Current\default$windows.data.bluelightreduction.bluelightreductionstate\windows.data.bluelightreduction.bluelightreductionstate\

मान का नाम : डेटा

नाइट लाइट को सक्षम करने के लिए :

  1. बाइट्स "10" और "00" को क्रमशः 24 और 25 इंडेक्स पर डेटा में जोड़ें ताकि सभी डेटा की लंबाई बढ़े (मौजूदा मूल्यों को न बदलें, बस दो और बाइट्स जोड़ें)
  2. 1 से 11 या 12 अनुक्रमित में वृद्धि मूल्य (उदाहरण के लिए: यदि यह एफएफ 01 था, तो अब इसे क्रमशः 00 02 होने की आवश्यकता है) वास्तव में ऐसा लगता है कि यहां समय है और यह 8 बाइट्स में छोटे एंडियन प्रारूप में लिखा गया है, इसलिए आपको आवश्यकता होगी 13, 14, 15, 16, 17 और 18 इंडेक्स भी अगर आप इसे सटीक करना चाहते हैं।

नाइट लाइट को निष्क्रिय करने के लिए :

  1. बाइट्स "10" और "00" को क्रमशः 24 और 25 इंडेक्स पर डेटा से हटा दें ताकि सभी डेटा लंबाई कम हो जाए
  2. 1 से 11 या 12 अनुक्रमित में वृद्धि मूल्य (उदाहरण के लिए: यदि यह एफएफ 01 था, तो अब इसे 00 02 होना चाहिए)

मुझे केवल अपने कार्यक्रम के लिए नाइट लाइट चालू / बंद करने की आवश्यकता थी, इसलिए दुर्भाग्य से अन्य सभी विकल्पों पर अभी भी शोध की आवश्यकता है। लेकिन ऐसा लगता है कि अन्य सभी काम करने के लिए मुख्य विकल्प (जैसे तापमान और अनुसूची बदलना) समय को ठीक से बढ़ाना है। ये मोड पड़ोसी रजिस्ट्री कुंजी windows.data.bluelightreduction.settings में किसी अन्य डेटा मान में किए जाने की आवश्यकता है।


क्या आपके पास किसी भी संयोग से इसे सक्षम-अक्षम करने के लिए एक स्क्रिप्ट है?
मेटामोर्फोसिस

नहीं। मैंने सी। में एक छोटा सा कार्यक्रम लिखा
hgrev

यदि आप एक लिंक पोस्ट कर सकते हैं, तब भी (कम से कम मेरे लिए) उपयोगी होगा। मैं
कायापलट

क्या आप एक कोड या exe फ़ाइल चाहते हैं?
hgrev

1
यहाँ स्रोत कोड और निष्पादन योग्य है: github.com/inamozov/DisplayTest
hgrev
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.