gpt4 book ai didi

c - 使用 CreateProcessWithTokenW() 从管理员帐户以非提升模式启动进程

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

我关注了 Frank K. 的 proposed solution用于从提升的用户进程启动普通用户进程。但是,我在使建议的解决方案起作用时遇到了一些困难(Win 7 x64 Professional;“普通用户”进程是从具有管理权限的域帐户启动的)。流程创建代码如下所示:

HANDLE processHandle = getProcessHandle("explorer.exe");

if (OpenProcessToken(processHandle, MAXIMUM_ALLOWED, &hToken))
{
if (DuplicateTokenEx(hToken, MAXIMUM_ALLOWED, NULL,
SecurityImpersonation, TokenPrimary, &hNewToken))
{
LPWSTR pointer = const_cast<LPWSTR>(commandLine.c_str());
bRet = CreateProcessWithTokenW(hNewToken,
0, // logon flags
0, // application name
pointer, // command-line
0, // creation flags
NULL, // environment - inherit from parent
NULL, // current directory
&StartupInfo,
&ProcInfo);
...
}
}

现在进程是在 CreateProcessWithTokenW 之后创建的,但是我检查进程是否具有管理权限的方法(见下文)表明进程具有管理权限(以及 ProcessExplorer,它在进程属性安全选项卡中列出:组: BUILTIN\Administrators --> 标志:所有者)。

 BOOL hasAdministratorRights()
{
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;
BOOL b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);

if (b)
{
if (!CheckTokenMembership(NULL, AdministratorsGroup, &b))
{
b = FALSE;
}
FreeSid(AdministratorsGroup);
}
return b;
}

注意:如果我在通过 runAs Windows 命令(以及给定的现有本地“用户”帐户)启动的进程/应用程序中调用上面的 hasAdministratorRights(),它将返回 false(因此它确认该进程仅具有用户权限,这是我所期待的)。但在使用上面的 CreateProcessWithTokenW() 创建的进程中调用时返回 true。

知道我可能做错了什么以及为什么无法使用 CreateProcessWithTokenW 正确创建我的用户进程吗?

在 Frank K. 提出的解决方案中,当从本地管理员帐户或从具有管理员权限的域帐户调用它们时,CreateProcessWithTokenW()(和其他 API)的行为是否存在差异?

最好的问候,马吕斯

最佳答案

问题是 UAC 在有问题的机器上被禁用,因此没有创建拆分 token 并且 Explorer 进程具有完全管理员权限。

原则上,您可以使用 CreateRestrictedToken() 解决此问题,但如果 UAC 被禁用,您可能应该假设这是故意的,这通常会产生默认行为,即给予新进程管理员权限,这是最明智的选择。

如果您需要确认特定 token 具有管理权限的原因是因为 UAC 被禁用(包括用户是本地管理员帐户的情况),您可以使用 GetTokenInformation()TokenLinkedToken option .

关于c - 使用 CreateProcessWithTokenW() 从管理员帐户以非提升模式启动进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24078323/

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