如何设置“用户无法更改密码”AD属性
问题描述:
我想弄清楚如何使用VB.NET设置AD的“用户无法更改密码”属性。如何设置“用户无法更改密码”AD属性
我原本希望使用这里找到的UserAccountControl标志http://support.microsoft.com/kb/305144,但我意识到你不能像设想的那样设置PASSWD_CANT_CHANGE
标志。这导致我发布Preventing an Active Directory user from changing his/her password using DirectoryServices但我无法保存工作。
这是我现在的代码。
Dim domainContext As PrincipalContext = New PrincipalContext(ContextType.Domain)
Dim user As UserPrincipal = UserPrincipal.FindByIdentity(domainContext, "user5")
user.UserCannotChangePassword = True
user.Save(domainContext)
每次我尝试做一个保存在这我得到一个InvalidOperationException。这个文件是不是太大的帮助之一:http://msdn.microsoft.com/en-us/library/bb335863.aspx
有什么奇怪,我是,如果我设置UserPrincipal对象的不同属性,如SAM帐户名,保存工作正常,但一旦我引入UserCannotChangePassword
属性,节约失败。
我已验证我用于执行此操作的用户具有适当的权限,但我不确定从此处要去哪里......任何想法?
答
找到了一个老派的方式来做到这一点,谢谢指出我在正确的方向@juergen d。猜猜我必须解决。
Dim objThisUser As IADs
Dim intUserFlags As Integer
' Bind to the user object with the current credentials.
objThisUser = GetObject("WinNT://" + gstrDomain + "/" + "user5")
intUserFlags = objThisUser.Get("userFlags")
'can't change
intUserFlags = intUserFlags Or ADS_UF_PASSWD_CANT_CHANGE
' Modify the userFlags property.
objThisUser.Put("userFlags", intUserFlags)
' Commit the changes
objThisUser.SetInfo()
我很接近全时具有完美的解决方案,但就是无法保存工作。这工作正常,我猜。使用这只意味着更多的代码行,并且适应性稍差。
你有没有尝试这个办法:http://msdn.microsoft.com/en-us/library/windows/desktop/aa746399%28v=vs.85%29.aspx – 2012-02-17 13:02:34
似乎不是来工作的。我希望能够使用这个新的UserPrincipal类,因为它使我所有的AD管理工作变得更加简单。我可以(理论上)在3行代码中更改属性,而不是20个。 – Boeckm 2012-02-17 13:46:00
是否存在内部异常? – 2012-02-17 19:17:29