【问题标题】:NetUserAdd() successful, but user is "invisible"NetUserAdd() 成功,但用户“不可见”
【发布时间】:2012-03-09 14:31:42
【问题描述】:

我正在使用NetUserAdd API 创建一个用户。它成功返回,用户有一个用户文件夹,我可以看到wmic useraccount get name 的用户名。但是,创建的用户在控制面板下不可见,在登录屏幕上也不可见。我假设我需要将用户添加到某个组,但我不知道哪个或如何。

这是我创建用户的方式:

USER_INFO_1 user_info;
ZeroMemory(&user_info, sizeof(user_info));
user_info.usri1_name = userName;
user_info.usri1_password = password;
user_info.usri1_priv = USER_PRIV_USER;
user_info.usri1_flags = UF_SCRIPT | UF_DONT_EXPIRE_PASSWD;

DWORD dwLevel = 1;
DWORD dwError = 0;
NET_API_STATUS nStatus = NetUserAdd(NULL, dwLevel, (LPBYTE)&user_info, &dwError);

如何使用户在登录屏幕上可见?

【问题讨论】:

  • 你的意思是stackoverflow.com/q/93771/960757这样的吗?
  • 很遗憾,这不起作用。
  • 另外,其他用户都没有进入那里,所以必须有其他方法。
  • 用户名有什么有趣/特别之处吗?过去(可能仍然存在)以$ 结尾的用户名具有特殊含义,并且这些帐户将在大多数用户界面中隐藏。
  • 不,不是那样的。用户名是“kioskuser”,简单的 ASCII 字符。

标签: c++ windows winapi user-accounts


【解决方案1】:

您已创建用户,但需要使用NetLocalGroupAddMembers 将其添加到用户组。

编辑:刚刚意识到我正在为 .NET 提供方法。对于 C++,请参阅 example

【讨论】:

  • 那么这个组叫“users”吗?不,我不需要 p/invoke,请参阅标签 :)
  • 是的,感谢您的努力。请耐心等待,我周末不工作:)。我会在星期一检查后回复您。
  • 我检查了你的答案,你是对的,问题确实是它不在群里。但是,您答案的第二部分不是很准确(我既不需要 SID,也不需要 CreateWellKnownSid 对此有帮助)。你肯定得到了我的支持,因为问题出在群组成员身份上。
【解决方案2】:

用户没有出现在欢迎屏幕上,因为它没有添加到用户组。这是怎么做的:

LOCALGROUP_MEMBERS_INFO_3 lmi3;
ZeroMemory(&lmi3, sizeof lmi3);
lmi3.lgrmi3_domainandname = user_info.usri1_name;
DWORD err = NetLocalGroupAddMembers(NULL, L"Users", 3, (LPBYTE) &lmi3, 1);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2015-09-26
    • 2017-07-30
    相关资源
    最近更新 更多