我正在尝试实现一个脚本/实用程序来重命名用户,设置默认密码,然后提示用户在 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();