使用NetUserAdd,CreateWellKnownSid和LookupAccountSid后为NetLocalGroupAddMembers指定用户名的最佳方法

时间:2017-12-30 04:07:07

标签: c winapi

好吧,我只想创建一个具有NetUserAdd功能的用户,但我发现我还必须将他添加到Users组才能登录。

我调用CreateWellKnownSid获取Users组的SID,LookupAccountSid获取该SID的字符串游戏。

这是我的代码的一部分:

addUser = NetUserAdd(NULL, infoLevel, (LPBYTE)&userData, &paramError);

    if (addUser != NERR_Success)
    {
        fwprintf(stderr, L"\nA system error has ocurred: %d\n", addUser);

        return 1;
    }
    else
    {

        //Let's allocate memory for the SID
        if (!(groupSID = LocalAlloc(memAttributes, sidSize)))   //if fails
        {
            wprintf(L"\nMemory allocation failed: \n");
            ShowError(GetLastError());
            exit(1);

        }

        //Let's create a SID for Users group
        if (!CreateWellKnownSid(sidType, NULL, groupSID, (DWORD*)&sidSize))
        {
            fwprintf(stderr, L"\nError getting the SID: \n");
            ShowError(GetLastError());
            exit(1);
        }
        else
        {

            //Converting SID to a readable string

            if (!LookupAccountSidW(NULL, groupSID, name, &nameSize,
                domainName, &domainNameSize, &accountType))
            {
                fwprintf(stderr, L"Error getting name from SID: \n");
                ShowError(GetLastError());
                return 1;

            }




        }

        LocalFree(groupSID);



    } 

我需要的是使用NetLocalGroupAddMembers将该用户添加到Users组,但这两个级别的数据需要Domain\Name格式,而不仅仅是用户名。我想我需要拨打GetComputerName(仅限本地计算机);但是,我不知道将从LookAccountSid检索到的用户组与用户名作为参数联系的最佳方法是什么,以发送函数需要的Domain\Name格式作为输入缓冲液中。

谢谢!

0 个答案:

没有答案