gpt4 book ai didi

c++ - 从 WindowsAPI 调用 NetLocalGroupAddMembers 时,安全 ID 结构无效错误

转载 作者:行者123 更新时间:2023-11-30 04:45:55 26 4
gpt4 key购买 nike

我想使用 Windows API 中的 NetLocalGroupAddMembers 函数将用户添加到本地管理员组。

    NET_API_STATUS nStatus;
DWORD dwLevel = 0;
LOCALGROUP_INFO_0 localGroupInformation;

localGroupInformation.lgrpi0_name = username;

nStatus = NetLocalGroupAddMembers(
NULL,
TEXT("Administrators"),
dwLevel,
(LPBYTE)& localGroupInformation,
1
);

但是,当我使用以下命令时,它会起作用:

net localgroup Administrators username /add

谢谢。

最佳答案

您必须使用用户 SIDLOCALGROUP_MEMBERS_INFO_0 结构。

像这样=>

        WCHAR wsName[256] = L"test";
DWORD dwSidSize = 0;
DWORD dwDomainSize = 0;
SID_NAME_USE snu;
LPWSTR pwszDomain = NULL;
PSID pSid = NULL;
LookupAccountName(NULL, wsName, NULL, &dwSidSize, NULL, &dwDomainSize, &snu);
DWORD dwErr = GetLastError();
if (dwErr == ERROR_INSUFFICIENT_BUFFER)
{
pSid = (PSID)LocalAlloc(LPTR, dwSidSize);
pwszDomain = (PWSTR)LocalAlloc(LPTR, dwDomainSize * sizeof(WCHAR));
if (!LookupAccountName(NULL, wsName, pSid, &dwSidSize, pwszDomain, &dwDomainSize, &snu))
{
// Handle error
}
}
if (pwszDomain != NULL)
LocalFree(pwszDomain);
if (pSid)
{
NET_API_STATUS nStatus;
DWORD dwLevel = 0;
LOCALGROUP_MEMBERS_INFO_0 localGroupMemberInfo;
localGroupMemberInfo.lgrmi0_sid = pSid;
nStatus = NetLocalGroupAddMembers(
NULL,
TEXT("Administrators"),
dwLevel,
(LPBYTE)&localGroupMemberInfo,
1
);
// Test nStatus...
LocalFree(pSid);
}

关于c++ - 从 WindowsAPI 调用 NetLocalGroupAddMembers 时,安全 ID 结构无效错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57041489/

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