2

我想在 Windows 中模拟其他用户。例如:我创建了一个仅对用户 A 和管理员具有权限的目录,当使用用户 B 登录并运行 .exe 时,我想模拟用户 A 以获得在该特定目录中编辑/删除/插入的权限。

我发现了这个:http: //msdn.microsoft.com/en-us/library/aa374731 (VS.85).aspx

4

2 回答 2

4

首先,请查看有关 Windows 用户模拟的这篇文章:

http://www.codeproject.com/KB/system/UserImpersonation.aspx

它应该给你一个开始的地方。如果您需要更多控制权,则需要查看访问令牌。

于 2008-10-17T10:15:19.673 回答
0

如果要访问用户 A 的文件夹和用户 B 的文件夹,则只需设置文件夹权限,使管理员有权进入所有文件夹。通常机器管理员已经拥有这些权限。我假设这里谈论的是普通的 Windows 用户帐户和普通的机器/域管理员帐户。

如果您想成为用户 A,则意味着您需要用户 A 的主动权限才能成为该人。冒充并不简单(根据我的尝试),您需要通过您的域控制器请求访问并协商您是用户 B 并且您有权冒充用户 A,通常由用户 A 和用户 B 共享完成和协商凭证句柄和安全上下文。我怀疑这是您希望遵循的流程类型。

一些有用的功能包括:

为了设置上下文,这些被使用并且数据在用户A和用户B之间来回传递以协商模拟

AcquireCredentialsHandle()
InitializeSecurityContext()
AcceptSecurityContext()
CompleteAuthToken()

一旦协商完成并创建了安全上下文,这些将用于启动和停止模拟。

ImpersonateSecurityContext()
RevertContext()

我不知道在没有相关用户的积极参与或以该用户身份积极登录的情况下模拟用户的任何其他方式。

希望这在某种程度上有所帮助。

于 2008-10-17T11:34:26.660 回答