首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加载ntuser.dat之前的

加载ntuser.dat之前的
EN

Stack Overflow用户
提问于 2019-03-16 00:17:12
回答 1查看 1K关注 0票数 1

我正在尝试创建一个Winlogon通知服务,该服务接收登录消息,然后从中心位置复制ntuser.dat (注册表)(就像漫游配置文件那样),当注销时,将其恢复(将ntuser.dat复制到中心位置)。我已经完成了服务,它接收到了SENS消息,但我认为SENS消息是在加载ntuser.dat之后接收的;因此,我收到了一个试图与ntuser.dat交互的“文件正在使用的消息”。我认为SENS不是这样做的方法,但是旧的hklm\xxx\xxx\winlogon\notify方式并不适用于windows vista和UP。所以我在这里迷路了。

在将ntuser.dat移动到用户配置文件之前,如何执行服务或DLL来停止登录进程?

提前谢谢。

经过大量的研究(文档非常陈旧和过时),我理解了SENS ()为什么不适合这个任务。

SENS服务位于Winlogon通知服务的下面一层,实际上,SENS本身是一个注册到Winlogon以接收通知的服务,然后,SENS通知实现该第二层COM接口的所有服务有关会话状态(如登录、注销等)的变化。

用户配置文件服务(ProfSvc)也是一个服务,与SENS一样,它接收来自Winlogon的通知,并负责执行NTUSER.DAT的策略和移动以及与注册表和用户配置文件相关的其他问题。

进一步研究后,我发现有一个注册表项可以控制这些服务的行为:

代码语言:javascript
运行
复制
HKLM \ System \ CurrectControlSet \ Control \ Winlogon \ Notifications \ Configurations

关于如何加载或调用该服务的顺序是:

代码语言:javascript
运行
复制
HKLM \ System \ CurrectControlSet \ Control \ Winlogon \ Notifications \ Configurations \ Default 

在这个键下面是一些带有可能事件的REG_SZ,比如:登录、注销、EndShell、解锁等等,内容是一个逗号分隔的字符串,其中包含要加载的服务的名称以便通知。

我创建了一个服务并添加了注册表项,并且可以获得winlogon来尝试调用我的服务,但是登录进程由于出现了如下错误而停止了:

事件ID: 6001描述: winlogon通知订阅服务器失败了通知事件。 事件ID: 6004描述: winlogon通知订阅服务器失败了一个关键通知事件。

我不知道该回答什么,也不知道要实现什么COM对象来接收事件和回答。

我的服务已经在profile服务之前执行了,所以如果我能够响应Winlogon,我就设法解决了一个针对Windows的自定义漫游配置文件服务。

有人吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-10 10:28:01

查看服务的HandlerEx函数。

控制事件之一是SERVICE_CONTROL_SESSIONCHANGE

如果dwControl是SERVICE_CONTROL_SESSIONCHANGE,则该参数可以是WM_WTSSESSION_CHANGE消息的wParam参数中指定的值之一。

它的参数dwEventType将是WTS_SESSION_LOGONWTS_SESSION_LOGOFF (如描述的这里这里)之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55192229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档