在某些情况下,尝试从服务中修改注册表失败了吗?

时间:2016-12-01 14:41:32

标签: c windows service

我再次使用Windows服务并尝试修改shell注册表项(HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Winlogon:Shell)。

最初,当SERVICE_CONTROL_STOP到达时,我尝试在ServiceControlHandler例程中执行此操作。通过启动/停止服务测试期间的工作已经登录了(我可以看到值已更改)。但是当我要关闭/重启系统时,值没有改变。

接下来,我尝试在用户登录或注销时执行相同操作(由ServiceControlHandler中的SERVICE_CONTROL_SESSIONCHANGE触发)。为了验证代码是否应该正常工作,我尝试在WTS_SESSTION_LOGOFF和WTS_SESSION_LOCK的情况下修改密钥 - 我可以看到锁定/解锁系统后值已更改。再次,当我真正注销时,价值没有改变。

你有什么想法,为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

我有时会看到这种行为,听起来像是#34;有时候来得太晚了#34;不是100%确定这是 soulution,但是在写完值后我添加了QSettings :: sync(),问题似乎消失了。