我们有使用LoadUserProfile()
启动流程的服务。如果进程终止,那些服务会调用UnloadUserProfile()
,然后自行终止服务。
那里的一切都很好。还有多种服务。但是,如果我们通过多个服务使用相同的用户帐户,则随机出现问题。可能是其中一个服务使用相同的用户帐户,重启或停止。
问题是用户配置文件在(我们的)服务中随机卸载,然后从服务启动的进程无法再访问用户配置文件。例如HKCU的问题 - 加载用户的访问。
注意:我所谈论的服务只是我们的服务。
我们的服务通过启动来调用LoadUserProfile()
,并通过停止来调用UnloadUserProfile()
。正如@RbMm指出卸载不是必要的,但即使我们自己调用它也不应该是问题。
感谢@RbMm提供的ReferenceCounting信息。 (未在LoadUserProfile()
- 文档中记录)
要解决我的问题,我需要了解引用计数。想象一下,由2个进程或服务加载的用户帐户配置文件。我会在这里使用服务。
我需要了解这些州会发生什么;
1: ServiceX 调用LoadUserProfile()
,然后 ServiceY 调用LoadUserProfile()
,然后 ServiceX 来电UnloadUserProfile()
,然后 ServiceX 停止。引用计数?
2: ServiceX 调用LoadUserProfile()
,然后 ServiceY 调用LoadUserProfile()
,然后 ServiceX 呼叫UnloadUserProfile()
,然后 ServiceX 再次呼叫UnloadUserProfile()
,然后 ServiceX 停止。引用计数?
3: ServiceX 调用LoadUserProfile()
,然后 ServiceY 调用LoadUserProfile()
,然后 ServiceX 停止。引用计数?
4: ServiceX 调用LoadUserProfile()
,然后 ServiceY 调用LoadUserProfile()
,然后 ServiceX 再次呼叫LoadUserProfile()
,然后 ServiceX 停止。引用计数?
有人可以解释一下吗?