0

我正在尝试实现一个脚本/实用程序来重命名用户,设置默认密码,然后提示用户在 Windows Server 2003 中初始登录时更改密码。我能够完成前 2 项但不是第三。具体来说,我希望用户遇到显示以下内容的 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();
4

2 回答 2

1

您不能使用 UserFlags 0x800000 将密码设置为过期 - 请参见此处。使用 PasswordExpired = 1 就足够了。您是否使用 UserFlags = 0x201 尝试过这个?

于 2011-03-13T13:26:36.717 回答
0

userEntry.Properties["PasswordExpired"].Value = 0;

我认为这就是问题

于 2011-02-14T20:06:07.160 回答