powershell 在Windows 10中按时间自动切换暗/亮模式(无需修改或更改主题!)

vhmi4jdf  于 2022-12-13  发布在  Shell
关注(0)|答案(2)|浏览(262)

现在大多数设备都允许自动切换暗/亮模式,但Windows 10似乎没有这样的功能。有没有办法实现这一点?例如使用任务调度程序?
似乎有很多关于如何以编程方式更改窗口“主题”的例子,但没有亮/暗模式切换(可以在设置/颜色中为“窗口模式”或“应用程序模式”独立设置)。

mcvgt66p

mcvgt66p1#

是的,有!
这可能是一个有点棘手的拉小康seamesly,但它可以做到以下步骤:
打开“任务调度器”并使用以下设置创建新任务:

  • 概述 *

  • “无论用户是否登录都运行”是必需的,这样powershell窗口不会在每次运行时 Flink 。
  • “不存储密码”复选框,因为它是脱机脚本
  • “以最高权限运行”,以确保没有中断(可选)
  • 触发器 *

第一次

  • 为“工作站解锁时”添加一个触发器
  • 添加一个每小时重复的触发器
  • 操作 *

  • 添加Program=Powershell且Arguments= $time=(Get-Date).TimeOfDay.Hours; if($time -gt 8 -and $time -lt 19){"Setting Light theme..";Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Type Dword -Force; Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Type Dword -Force} else {"Setting Dark theme..."; Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 0 -Type Dword -Force; Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 0 -Type Dword -Force;}的操作

PS脚本看起来像是一行中包含了很多内容,但这只是为了让我们可以将其粘贴到Action中的“arguments”diaglog中。因此,让我们将其分解一下,看看它的作用:

# Set current time in a variable
$time=(Get-Date).TimeOfDay.Hours; 
# if later than 8am and earlier than 7pm, use light mode
if($time -gt 8 -and $time -lt 19){ 
    "Setting Light theme.."; # output in case we let a window be opened
    # set "app" system mode to "light"
    Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 1 -Type Dword -Force; 
    # set "OS" system mode to "light"
    Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 1 -Type Dword -Force; 
} else {
    "Setting Dark theme..."; # output in case we let a window be opened
    # set "app" system mode to "dark"
    Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name AppsUseLightTheme -Value 0 -Type Dword -Force; 
    # set "OS" system mode to "dark"
    Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize -Name SystemUsesLightTheme -Value 0 -Type Dword -Force; 
}
  • 更新日期:*

虽然非常紧凑,但在一行中维护代码可能会很麻烦,所以如果你更喜欢将PS脚本保存在.ps1文件中,你可以简单地将Powershell.exe(或pwsh.exe)放在程序框中,然后将-file C:\yourscript.ps1作为参数来执行它:
x1c4d 1x指令集

5cg8jx4n

5cg8jx4n2#

另一种方法是对所有计时使用任务计划程序,并使用Reg来切换注册表项。

  • 建立工作。
  • 通用〉名称〉“打开灯光模式”。
  • 触发器〉新建...〉每日〉设置所需的灯光模式开始时间
  • 操作〉新建...
  • 操作〉启动程序
  • 程序/脚本〉Reg
  • 添加参数

add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 1 /f

  • 建立工作。
  • 通用〉名称〉“打开黑暗模式”。
  • 触发器〉新建...〉每日〉设置所需的黑暗模式开始时间
  • 操作〉新建...
  • 操作〉启动程序
  • 程序/脚本〉Reg
  • 添加参数

add HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize /v AppsUseLightTheme /t REG_DWORD /d 0 /f
为每个任务启用这些设置。

相关问题