无论 O.S 语言如何,将用户帐户添加到用户组
Add user account to user-group regardless the O.S language
在下面的函数中,在这一行中我使用了特定于语言的名称“Users”:
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);
在下面的函数中,在这一行中我使用了特定于语言的名称“Users”:
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);