Cal*_*che 4 c# active-directory
我想将新用户帐户设置为在创建后的90天内到期.这是我创建用户并设置所有内容的代码.一切正常,除了我试图将其设置为过期的最后一个块.
DirectoryEntry newUser = dirEntry.Children.Add("CN=" + cnUser, "user");
newUser.Properties["samAccountName"].Value = cnUser;
newUser.Properties["userPrincipalName"].Value = cnUser;
newUser.Properties["pwdLastSet"].Value = 0;
newUser.CommitChanges();
//Changes Password
String passwrd = userPassword.ToString();
newUser.Invoke("SetPassword", new object[] { passwrd });
newUser.CommitChanges();
//Sets User Account to Change Passowrd on new login
newUser.Properties["pwdLastSet"].Value = 0;
newUser.CommitChanges();
//Enables account
newUser.Properties["userAccountControl"].Value = (int)newUser.Properties["userAccountControl"].Value & ~0x2;
newUser.CommitChanges();
//Set the account to expire in 90 days
var dt1 = DateTime.Today.AddDays(90);
newUser.Properties["accountExpires"].Value = dt1.ToFileTime().ToString();
newUser.CommitChanges();
Run Code Online (Sandbox Code Playgroud)
关于如何开展工作的任何建议?
谢谢
请参阅有关此字段的文档.你需要将其转换为"滴答声" -
the number of 100-nanosecond intervals since January 1, 1601 (UTC). A value of 0 or 0x7FFFFFFFFFFFFFFF (9223372036854775807) indicates that the account never expires.
Run Code Online (Sandbox Code Playgroud)
new DateTime(DateTime.UtcNow.AddDays(90).Ticks - new DateTime(1601, 1, 1).Ticks) 将为您提供正确和准确的价值.
您可以通过从上面的表达式获取值并执行来检查您的工作(手动):
w32tm.exe /ntte 130149277684873234
Run Code Online (Sandbox Code Playgroud)
以上命令的结果对我来说是
150635 17:42:48.4873234 - 6/5/2013 12:42:48 PM
Run Code Online (Sandbox Code Playgroud)
小智 6
或者你可以这样做:
DateTime expire = System.DateTime.Now.AddDays(90);
newUser.Properties["accountExpires"].Value = Convert.ToString((Int64)expire.ToFileTime());
newUser.CommitChanges();
Run Code Online (Sandbox Code Playgroud)
这比弄乱蜱虫和所有其他东西更容易处理
| 归档时间: |
|
| 查看次数: |
8017 次 |
| 最近记录: |