将用户帐户添加到用户组,而不考虑操作系统语言

本文关键字:不考虑 操作系统 语言 用户组 用户 添加 | 更新日期: 2023-09-27 17:57:18

在下面的函数中,在这一行中,我使用特定于语言的名称"用户":

GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "Users");

我怎么能做到特定于语言的意识?

我的意思是,例如,在我的语言西班牙语中,组名是"Usuarios",因此该函数将抛出异常,因为找不到英文名称。

我希望能够将用户添加到管理员、标准用户和来宾,而不必担心机器当前区域性语言。可能吗?。


该函数:

public static bool CreateLocalWindowsAccount(string username, string password, string displayName, string description, bool canChangePwd, bool pwdExpires)
{
    try
    {
        PrincipalContext context = new PrincipalContext(ContextType.Machine);
        UserPrincipal user = new UserPrincipal(context);
        user.SetPassword(password);
        user.DisplayName = displayName;
        user.Name = username;
        user.Description = description;
        user.UserCannotChangePassword = canChangePwd;
        user.PasswordNeverExpires = pwdExpires;
        user.Save();

        //now add user to "Users" group so it displays in Control Panel
        GroupPrincipal group = GroupPrincipal.FindByIdentity(context, "Users");
        group.Members.Add(user);
        group.Save();
        return true;
    }
    catch (Exception ex)
    {
        LogMessageToFile("error msg" + ex.Message);
        return false;
    }
}

将用户帐户添加到用户组,而不考虑操作系统语言

可以使用已知的 SID 指定要检索的组。对于Users组,SID 是S-1-5-32-545但通过使用WellKnownSidType枚举可以避免将实际 SID 放入代码中:

var sid = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
var principal = GroupPrincipal.FindByIdentity(context, IdentityType.Sid, sid.Value);