2011-02-01 24 views
5

Không có vấn đề gì tôi đang cố gắng để ném vào nó, phương pháp này ở đây luôn kết quả trong các ngoại lệ sau đây:Các ChangePassword gọi với đối tượng DirectoryEntry

  var retVal = this.DirectoryEntry.Invoke("ChangePassword", new object[] { oldPassword, newPassword }) == null; 

InnerException = { "Mật khẩu không đáp ứng các chính sách mật khẩu Kiểm tra độ dài mật khẩu tối thiểu, độ phức tạp của mật khẩu và yêu cầu lịch sử mật khẩu (Ngoại lệ từ HRESULT: 0x800708C5) "}

Tôi đã kiểm tra chính sách mặc định tên miền mặc định (không tìm thấy trong tên miền thử nghiệm), chính sách nhóm OU (không tồn tại) và không thể tìm thấy bất kỳ thứ gì có thể chi phối chính sách mật khẩu, cho dù passw có phức tạp hay lâu hay không thứ tự tôi cung cấp vào chức năng là, nó kết quả trong cùng một ngoại lệ. Bây giờ là phần thú vị nhất là khi tôi làm như vậy (đối với đối tượng DirectoryEntity giống nhau và cùng một mật khẩu) bằng cách gọi này:

var retVal = this.DirectoryEntry.Invoke("SetPassword", new object[] { newPassword }) == null; 

Cuộc gọi cuối cùng thành công w/o bất kỳ vấn đề.

Trả lời

7

Có một số chính sách nhóm sẽ ảnh hưởng đến độ phức tạp của mật khẩu. Hầu hết chúng được bật theo mặc định sau khi bạn cài đặt Active Directory. Nếu bạn chưa bao giờ chạm vào chúng sau khi bạn thiết lập miền thử nghiệm, rất có thể, các chính sách mật khẩu đó vẫn được áp dụng.

Đây là cài đặt bảo mật tên miền mặc định thử nghiệm của tôi. Nếu bạn không thay đổi nó trước đó, nó sẽ trông tương tự.

Default Domain Security Settings

Bạn có thể tìm thấy mô tả chi tiết về từng chính sách trên MSDN. Tôi sẽ chỉ bao gồm một bản tóm tắt và một liên kết ở đây.

  • Enforce password history - Đảm bảo bạn không sử dụng lại mật khẩu cũ.
  • Maximum password age - Đảm bảo bạn không thể sử dụng cùng một mật khẩu nhiều hơn một khoảng thời gian. Mặc định là 42 ngày.
  • Minimum password age - Đảm bảo bạn không thể thay đổi mật khẩu cho đến khi quá một khoảng thời gian. Mặc định là 1 ngày trong một miền.
  • Minimum password length - Tự giải thích. Mặc định là 7 ký tự trên bộ điều khiển miền.
  • Password must meet complexity requirements - Hãy chắc chắn rằng bạn đang sử dụng một sự kết hợp của các chữ cái, số và ký tự biểu tượng trong mật khẩu của bạn

Tất cả các thiết lập ở trên có thể là nguyên nhân của lỗi 0x800708C5 của bạn. Đặc biệt, tôi đoán đó là chính sách mật khẩu "tuổi mật khẩu tối thiểu" khiến bạn gặp rắc rối. Nó được thiết lập mặc định là 1 ngày. Nếu tài khoản thử nghiệm của bạn là tài khoản người dùng mới được tạo ngay bây giờ, bạn không thể thay đổi mật khẩu của mình trong cùng một ngày.

Vì vậy, bây giờ, bạn có thể nghĩ rằng trong môi trường thử nghiệm của mình, bạn nên vô hiệu hóa tất cả các chính sách mật khẩu này cho mục đích phát triển. Tôi sẽ không khuyên bạn chỉ cần làm cho tất cả các chính sách không xác định bằng cách bỏ chọn hộp kiểm trong các trang thuộc tính.Tôi muốn giới thiệu các cài đặt sau.

Một bước cuối cùng bạn cần làm là đưa chính sách nhóm vào máy của bạn một lần nữa. Hãy nhớ rằng, chính sách nhóm là các cài đặt được lưu trữ trên Active Directory. Các chính sách nhóm máy được áp dụng tại thời điểm khởi động máy trong khi các chính sách nhóm người dùng được áp dụng vào thời gian đăng nhập của người dùng. Chính sách mật khẩu là một trong những chính sách máy. Vì vậy, bạn có thể khởi động lại máy tính của bạn ngay bây giờ hoặc bạn có thể đi đến dấu nhắc lệnh và chạy gpupdate.

Tôi hy vọng tôi không bỏ lỡ bất kỳ thông tin quan trọng nào. Hãy cho tôi biết nếu nó vẫn không hoạt động :)

+0

cảm ơn bạn, tôi sẽ chạy thử nghiệm nhiều hơn và bạn sẽ biết sớm. – dexter

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