冒充用户访问配置单元 - 各种方法,有哪些实际问题?

时间:2009-01-19 21:05:31

标签: c++ windows login impersonation token

我正在设计一个在Win2000,XP和Vista上的LocalSystem帐户下运行的服务。它需要访问用户注册表配置单元,有时需要长时间访问,无论是在用户登录时,还是在他们未登录时(如果配置文件是本地的。如果配置文件是漫游而未加载,我不会尝试加载它。)

如果用户已登录,我可以通过各种方式获取用户访问令牌(例如,从其资源管理器进程,或通过从服务控制管理器接收登录事件),然后使用ImpersonateLoggedOnUser和RegOpenCurrentUser访问用户的配置单元。但是,如果用户在模仿并打开其配置单元时从开始菜单中选择LogOff,会产生什么影响?注销会被阻止吗?我的假冒行为会被终止吗?

如果用户未登录,我可以使用RegLoadKey直接打开配置单元NTUSER.DAT。 (登录用户不可能)。但是,如果用户决定登录,这会产生什么影响(我认为蜂巢将被锁定并且登录被阻止,或者可能遇到困难?)

我将设置一些测试项目来探索这些想法,然而,无论它们的明显结果是什么,这些问题都是理论上的问题,这些问题可能会或将由用户登录/输出期间引起的问题引起。服务的行动。

警告:ImpersonateLoggedOnUser只能用于登录用户(从进程或SCM事件获得的令牌)或者用于我有明文密码的用户调用WinLogon并获取令牌 - TRUE / FALSE?换句话说,虽然我拥有LocalSystem的最大权限,并且能够更改用户的密码甚至删除用户的帐户,但如果用户未登录,则完全无法创建新令牌来模拟用户而无需密码?

1 个答案:

答案 0 :(得分:1)

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

相关问题