2015-06-19 4 views
0

В функции ниже, в этой строке я использую название конкретного языка «пользователей»:Добавить учетную запись для пользователя-группы независимо от языка ОС

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; 
    } 

} 

ответ

5

Вы можете использовать хорошо известный 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);