2010-09-16 43 views
9

i có mã này để tạo ra một cửa sổ người dùng cục bộtạo tài khoản người dùng cục bộ

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

    } 

tôi đã cố gắng này trên máy tính của tôi nó hoạt động tốt. nhưng sau đó tôi đặt nó trên máy chủ windows. và cố gắng tạo người dùng ở đó.

Đầu tiên tôi đã nhận được báo lỗi "truy cập chung lỗi bị từ chối" vì vậy tôi đã sử dụng một quản trị viên

nhưng bây giờ tôi nhận được lỗi "Đường dẫn mạng không tìm thấy"

làm thế nào tôi có thể giải quyết này lỗi .. nhờ

Trả lời

8

tôi đã có một vấn đề rất tương tự thay đổi dòng đầu tiên để

PrincipalContext context = new PrincipalContext(ContextType.Machine, "127.0.0.1"); 

xem có khắc phục vấn đề của bạn. Và ba kiểm tra xem chương trình có đang chạy với quyền quản trị viên hay không.

Vấn đề khác có thể là máy chủ có yêu cầu phức tạp về mật khẩu và password đang được chuyển đến chức năng không đáp ứng các yêu cầu đó. Vấn đề có biến mất nếu bạn vượt qua nó [email protected]!fda làm mật khẩu?

Tôi chắc chắn 90% đó là một trong hai vấn đề đó.


Đối với nhóm người dùng của bạn không lưu, tôi không chắc chắn lý do. Đây là một đoạn trích từ một trong những dự án của tôi đang làm điều tương tự. Tôi không thể thấy sự khác biệt.

using (GroupPrincipal r = GroupPrincipal.FindByIdentity(context, "Remote Desktop Users")) 
using (GroupPrincipal u = GroupPrincipal.FindByIdentity(context, "Users")) 
{ 
    //snip 
    UserPrincipal user = null; 
    try 
    { 
     if (userInfo.NewPassword == null) 
      throw new ArgumentNullException("userInfo.NewPassword", "userInfo.NewPassword was null"); 
     if (userInfo.NewPassword == "") 
      throw new ArgumentOutOfRangeException("userInfo.NewPassword", "userInfo.NewPassword was empty"); 
     //If the user already is in the list of existing users use that one. 
     if (pr.ContainsKey(username)) 
     { 
      user = (UserPrincipal)pr[username]; 
      user.Enabled = true; 
      user.SetPassword(userInfo.NewPassword); 
     } 
     else 
     { 
      //create new windows user. 
      user = new UserPrincipal(context, username, userInfo.NewPassword, true); 
      user.UserCannotChangePassword = true; 
      user.PasswordNeverExpires = true; 
      user.Save(); 
      r.Members.Add(user); 
      r.Save(); 
      u.Members.Add(user); 
      u.Save(); 
     } 
     IADsTSUserEx iad = (IADsTSUserEx)((DirectoryEntry)user.GetUnderlyingObject()).NativeObject; 
     iad.TerminalServicesInitialProgram = GenerateProgramString(infinityInfo); 
     iad.TerminalServicesWorkDirectory = Service.Properties.Settings.Default.StartInPath; 
     iad.ConnectClientDrivesAtLogon = 0; 
     user.Save();    
    } 
    catch(Exception e) 
    { 
     //snip 
    } 
    finally 
    { 
     if (user != null) 
     { 
      user.Dispose(); 
     } 
    } 
} 
+0

Nếu nó mà là một vấn đề mật khẩu PasswordExecption sẽ được ném ra không phải là một IOException –

+0

"Đường dẫn mạng không tìm thấy" cũng có thể được nhắn ném bởi COM –

+0

để làm việc này .... nhưng đây là không thêm người dùng vào nhóm người dùng .... bất kỳ trợ giúp nào ?? – user175084

0

kiểm tra xem bạn có bật UAC hay không, bạn phải viết mã để nâng cao đặc quyền ứng dụng của mình. Tuy nhiên, điều này khởi động lại ứng dụng của bạn.

http://support.microsoft.com/kb/981778

Các vấn đề liên quan