好吧,我只想创建一个具有NetUserAdd
功能的用户,但我发现我还必须将他添加到Users组才能登录。
我调用CreateWellKnownSid
获取Users组的SID,LookupAccountSid
获取该SID的字符串游戏。
这是我的代码的一部分:
addUser = NetUserAdd(NULL, infoLevel, (LPBYTE)&userData, ¶mError);
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
格式作为输入缓冲液中。
谢谢!