You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Win32 API修改设置后Windows屏幕保护超时不生效问题

远程控制屏保的超时设置无法立即生效问题

问题概述

我为客户开发了一款可远程控制的.scr格式屏幕保护程序,支持以下功能:

  • 切换媒体类型(视频、图片)
  • 启停屏幕保护
  • 设置超时时间

目前除超时设置外,所有功能均正常运行。超时设置存在的问题是:修改后无法立即生效,仅在以下两种场景下才会生效:

  1. 重启机器后
  2. 切换至系统自带的3D Text屏保,再切回自研屏保时偶尔生效

安装方式说明

针对屏保安装,我测试了两种方案,最终选用了更简便的注册表方式:

  • 注册表手动配置
  • 调用user32.dll中的InstallScreensaver工具

已尝试的超时修复方案

为解决超时无法立即生效的问题,我尝试了以下所有方案,但均未成功:

  1. 直接修改注册表中ScreenSaveTimeout值,随后调用带SPIF_SENDCHANGE参数的SystemParametersInfo
  2. 调用SystemParametersInfo并传入SPI_SETSCREENSAVETIMEOUT,搭配SPIF_SENDCHANGE、SPIF_UPDATEINIFILE、SPIF_SENDWININICHANGE的所有参数组合
  3. 手动/在安装程序中执行命令强制更新参数:
    rundll32.EXE user32.dll,UpdatePerUserSystemParameters
    
  4. 将自研屏保文件的所有者改为SYSTEM账户

以上操作均能成功更新注册表和系统屏幕保护设置界面中的超时数值,但修改后的规则始终无法立即触发。

项目环境

  • 开发语言/框架:C# .NET Core 3.1
  • 外部依赖:仅LibVLC等两个第三方库,资源与内存消耗极低

请问我遗漏了什么关键步骤或配置?


内容的提问来源于stack exchange,提问作者Zlatan Omerović

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 10:35:02