2011-02-01 33 views
5

不管是什麼我想扔它,這種方法在這裏總是會導致以下異常:的ChangePassword調用與DirectoryEntry對象

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

的InnerException = {「密碼不符合密碼策略(從HRESULT中異常:0x800708C5)「}

我自然地檢查了域默認策略(在我的測試域中找不到),OU組策略(不存在)並且無法找到任何可以管理密碼策略的內容,但不管密碼多長或複雜ord我提供的功能是,它導致同樣的例外。

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

最後調用成功W/O型的任何問題: 現在,當我做相同(相同DirectoryEntity對象和相同的密碼)通過調用這個最有趣的部分 是。

回答

7

有一些組策略會影響密碼的複雜性。安裝Active Directory後,其中大多數默認情況下處於打開狀態。如果您在設置測試域後從未觸摸過它們,那麼這些密碼策略很可能仍然存在。

這是我的測試域默認域安全設置的樣子。如果您以前沒有更改它,它應該看起來很相似。

Default Domain Security Settings

你可以找到每個MSDN上的政策的具體描述。我只在這裏包括一個總結和一個鏈接。

上述所有設置都可以成爲你的0x800708C5錯誤的原因。特別是,我猜這是「密碼最短使用期限」的密碼策略,可能會給您帶來麻煩。它默認設置爲1天。如果您的測試帳戶是剛剛創建的新用戶帳戶,那麼您可能不會在同一天更改密碼。

所以現在,您可能會認爲在您的測試環境中,應該禁用所有這些密碼策略以用於開發目的。我不會建議通過取消選中屬性頁中的複選框來使所有策略未定義。我會推薦以下設置。

您需要做的最後一步是將組策略重新填充到您的計算機。請記住,組策略是存儲在Active Directory上的設置。計算機組策略在機器啓動時應用,而用戶組策略在用戶登錄時應用。密碼策略是這些機器策略之一。因此,您可以立即重新啓動計算機,也可以轉至命令提示符並運行gpupdate

我希望我沒有錯過任何重要的信息。讓我知道如果它仍然不工作:)

+0

謝謝你,我會運行更多的測試,你會很快知道。 – dexter 2011-02-02 16:09:40