冒充用户访问蜂箱 – 各种方法,有什么实际问题?

我正在devise一个服务在Win2000,XP和Vista下的LocalSystem帐户下运行。 它需要访问用户registryconfiguration单元,有时需要很长时间,无论是用户login还是未login(如果configuration文件是本地的,如果configuration文件是漫游的,并且没有加载,我不会尝试加载它。)

如果用户已login,则可以通过各种方式(例如,从其资源pipe理器进程或通过从服务控制pipe理器接收login事件)获取用户访问令牌,然后使用ImpersonateLoggedOnUser和RegOpenCurrentUser访问用户的configuration单元。 但是,如果用户在模拟并打开其configuration单元时从“开始”菜单中select“注销”,会有什么影响? 注销是否会被阻止? 我的模仿会被终止吗?

如果用户没有login,我可以使用RegLoadKey直接打开configuration单元NTUSER.DAT。 (不可能login的用户)。 但是,如果用户决定login(我想蜂巢将被locking并且login被阻止,或者可能会遇到困难,这会产生什么影响?)

然而,我将设置一些testing项目来探索这些想法,不pipe其明显的结果如何,这些问题都是理论上的,这些问题可能或将会由用户在这些操作期间login/服务。

警告:ImpersonateLoggedOnUser只能用于login用户(从进程或SCM事件获得的令牌),或者为我有明文密码的用户调用WinLogon并获取令牌 – TRUE / FALSE? 换句话说,尽pipe我拥有LocalSystem的最大权限,并且能够更改用户的密码,甚至可以删除用户的帐户,但是如果用户没有login,那么完全不可能创build新的令牌来模拟用户,而不需要密码?

显然,如果用户登录时已经被另一个进程加载了,用户的配置文件可能会被损坏。在这种情况下,系统会尝试为用户创建一个新的子目录。