2011-02-14 87 views
0

我試圖實現一個腳本/實用程序,重命名用戶,設置默認密碼,然後將提示用戶更改他們的初始登錄在Windows Server 2003中的密碼。我能夠完成前兩項但不是第三項。具體來說,我希望用戶遇到Windows對話框,其中指出以下內容:「您需要在第一次登錄時更改密碼」然後它將它們帶到「更改密碼」對話框,該對話框中有一個「確定」和「取消」按鈕。如果他們點擊取消,他們將被帶到初始登錄屏幕。Windows - 本地用戶管理

我實現了下面的代碼來試圖完成這個。我得到的行爲是爲用戶提供一個對話框,指出密碼已過期並且必須更改,系統會提示您這樣做。但是,用戶可以簡單地單擊取消,並且用戶已登錄。該實用程序在c#中編寫腳本,但如果它使事情變得更容易,我可以使用其他語言。

DirectoryEntry directory = new DirectoryEntry("WinNT://" + Environment.MachineName + ",computer"); 
DirectoryEntry userEntry = directory.Children.Find("defaultUsername"); 
userEntry.Rename("theUser"); 
userEntry.Invoke("SetPassword", new object[] { "defaultPassword" }); 
userEntry.Properties["PasswordExpired"].Value = 1; 
userEntry.Properties["UserFlags"].Value = 0x800201; 
userEntry.CommitChanges(); 

回答

0

userEntry.Properties [「PasswordExpired」]。Value = 0;

我認爲是問題

+0

這不是問題。這允許用戶在沒有提示密碼更改的情況下登錄 – DeRegul8or 2011-02-14 20:44:57

1

不能使用UserFlags的0x800000設置密碼過期 - 見here。使用PasswordExpired = 1應該足夠了。你用UserFlags = 0x201來試試這個嗎?