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

服务程序部署后TimerBackup_Tick触发空引用异常问题排查

问题原因及解决方案

核心原因

服务程序默认运行在Local System账户下,这个账户没有交互式登录会话,对应的Registry.CurrentUser注册表 hive 并未加载,直接调用OpenSubKey就会触发NullReferenceException——因为Registry.CurrentUser本身就是null,而非子项不存在。

调试时你用的是当前登录用户的身份,CurrentUser hive 正常加载,所以能正常读取注册表。

可行解决方案

  • 改用Registry.LocalMachine存储配置:如果你的注册表项可以迁移到HKEY_LOCAL_MACHINE下,直接替换代码为Registry.LocalMachine.OpenSubKey(mainsubkey),这样服务账户(Local System)默认有访问权限。
  • 修改服务登录账户:在服务管理器中找到你的HimayaService,右键属性→登录,选择一个有交互式登录权限的用户账户(比如你调试用的用户),这样服务运行时会加载该用户的CurrentUser hive,就能正常读取原注册表项。
  • 加载指定用户的注册表 hive:如果必须用CurrentUser,可以通过P/Invoke调用RegLoadKey加载目标用户的HKEY_USERS下的对应SID hive,但这种方式需要更高权限,且实现复杂,不推荐作为首选。

内容的提问来源于stack exchange,提问作者Zayd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:04:53