在C++中帮助使用NETUSERADODE()和NETROLAL GROUPADADAMEMPS()

在C++中帮助使用NETUSERADODE()和NETROLAL GROUPADADAMEMPS(),c++,winapi,C++,Winapi,所以我想我差点就成功了。我使用一个函数创建虚拟帐户,并编写第二个函数将其添加到远程桌面组。问题是,管理员帐户是登录的帐户,所以我不确定如何指定要添加到组中的帐户。这是我的密码 正在正确创建用户 void AddRDPUser() { USER_INFO_1 ui; DWORD dwLevel = 1; DWORD dwError = 0; NET_API_STATUS nStatus; ui.usri1_name = L"BrettXFac

所以我想我差点就成功了。我使用一个函数创建虚拟帐户,并编写第二个函数将其添加到远程桌面组。问题是,管理员帐户是登录的帐户,所以我不确定如何指定要添加到组中的帐户。这是我的密码

正在正确创建用户

 void AddRDPUser()
 {
     USER_INFO_1 ui;
     DWORD dwLevel = 1;
     DWORD dwError = 0;
     NET_API_STATUS nStatus;

     ui.usri1_name = L"BrettXFactor";
     ui.usri1_password = L"XfactorsServer96";
     ui.usri1_priv = USER_PRIV_USER;
     ui.usri1_home_dir = NULL;
     ui.usri1_comment = NULL;
     ui.usri1_flags = UF_SCRIPT;
     ui.usri1_script_path = NULL;

     nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&ui, &dwError);
 }
但是我不知道如何指定将他们添加到此组,因为他们没有登录。任何帮助都将不胜感激

 void AddToGroup()
 {
     LOCALGROUP_MEMBERS_INFO_3 lgmi3;
     DWORD dwLevel = 3;
     DWORD totalEntries = 1;
     NET_API_STATUS nStatus;
     LPCWSTR TargetGroup = L"Remote Desktop Users";

     LPSTR sBuffer = NULL;
     memset(sBuffer, 0, 255);
     DWORD nBuffSize = sizeof(sBuffer);

     if(GetUserNameEx(NameDnsDomain, sBuffer, &nBuffSize)==0)
     {
         Msg("Failed to add User to Group\n");
         return;
     }

     LPWSTR user_name = (LPWSTR)sBuffer;
     lgmi3.lgrmi3_domainandname = user_name;

     nStatus = NetLocalGroupAddMembers(NULL, TargetGroup, 3,
         (LPBYTE)&lgmi3, totalEntries);
 }

无意冒犯,但您似乎根本不知道自己在用代码做什么。您没有将当前用户添加到目标组;您正在向其中添加刚刚创建的用户,对吗?那你为什么打电话给GetUserNameEx?只需使用新用户的名称:

lgmi3.lgrmi3_domainandname = L"BrettXFactor";

很抱歉,我以前从未使用过StackOverflow,而且它似乎没有使用与普通论坛相同的过程。它看起来更像是你提出一个问题,得到一个答案,然后发布一个新问题。谢谢你的提醒!我让它工作了,你说的对,我被搞糊涂了。我试图使用GetUserNameEx获取它们所属的域,但有人提到,自从我创建了它,它们就位于本地域中。谢谢你的帮助!