gpt4 book ai didi

windows - Windows 用户模拟有哪些副作用?

转载 作者:可可西里 更新时间:2023-11-01 11:28:12 25 4
gpt4 key购买 nike

在 Windows 中,程序可以通过调用 LogonUser 来获取用户访问 token , OpenProcessToken 、SSPI 函数和其他一些函数。获得 token 后,您可以将此 token 传递给许多函数,以便以该用户的身份执行操作。这类操作通常会对“父”进程产生副作用吗?

例如,您可以通过 LoadUserProfile 加载用户的配置文件(注册表设置等) .除此之外,LoadUserProfile 会将用户的注册表配置单元加载到 HKEY_USERS 并将 HKEY_CURRENT_USER 映射到它。从父进程的角度来看,这会改变 HKEY_CURRENT_USER 吗?或者它只是在作为该用户通过 CreateProcessAsUser 启动新进程后才“可见” , 通过 ImpersonateLoggedOnUser 模拟当前进程等等?

最佳答案

根据其 documentation , LoadUserProfile() 返回已加载的 HKEY_CURRENT_USER 键的句柄。然后您可以将该句柄传递给注册表函数,它们将访问该用户的数据。 LoadUserProfile() 不会影响与运行调用进程的用户关联的 HKEY_CURRENT_USER 键。

模拟可以影响调用进程的 HKEY_CURRENT_USER 键,但通常不会:

Predefined Keys

HKEY_CURRENT_USER
...
The mapping between HKEY_CURRENT_USER and HKEY_USERS is per process and is established the first time the process references HKEY_CURRENT_USER. The mapping is based on the security context of the first thread to reference HKEY_CURRENT_USER. If this security context does not have a registry hive loaded in HKEY_USERS, the mapping is established with HKEY_USERS.Default. After this mapping is established it persists, even if the security context of the thread changes.

因此,如果您在第一次使用 HKEY_CURRENT_USER 时模拟用户,那么它将在整个过程中映射到该用户的 key 。 Raymond Chen 甚至在他的博客上说了很多:

Is it wrong to call SHFileOperation from a service? Revised

The registry key HKEY_CURRENT_USER is bound to the current user at the time the key is first accessed by a process:
...
This means that if you impersonate a user, and then access HKEY_CURRENT_USER, then that binds HKEY_CURRENT_USER to the impersonated user. Even if you stop impersonating, future references to HKEY_CURRENT_USER will still refer to that user.

但是,在大多数情况下,您可能会在模拟任何人之前访问注册表,或者您在模拟期间不会访问注册表,因此 HKEY_CURRENT_USER 通常会映射到应用程序的用户正在运行。如果线程正在模拟用户并需要访问该用户的 HKEY_CURRENT_USER 键,请使用 OpenThreadToken()(如果您还没有 token )和 LoadUserProfile () 以获取该用户的 HKEY_CURRENT_USER 句柄。

关于windows - Windows 用户模拟有哪些副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com