首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NetLocalGroupAddMembers调用WindowsAPI时,安全id结构是无效的错误

从NetLocalGroupAddMembers调用WindowsAPI时,安全id结构是无效的错误
EN

Stack Overflow用户
提问于 2019-07-15 14:06:14
回答 1查看 218关注 0票数 1

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

代码语言:javascript
复制
    NET_API_STATUS nStatus;
    DWORD dwLevel = 0;
    LOCALGROUP_INFO_0 localGroupInformation;

    localGroupInformation.lgrpi0_name = username;

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

但是,当我使用以下命令时,它可以工作:

代码语言:javascript
复制
net localgroup Administrators username /add

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-15 16:05:22

您必须使用用户LOCALGROUP_MEMBERS_INFO_、SID、和结构。

像这样的=>

代码语言:javascript
复制
        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);
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57041489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档