C#DirectoryEntry属性值更改

时间:2018-04-03 21:33:23

标签: c# .net directoryentry userprincipal

我想用C#来

  1. 创建新用户。
  2. 将其添加到"用户"组
  3. 启用拨入远程网络权限
  4. 禁用遥控器
  5. 我的代码:

    PrincipalContext ctx = new PrincipalContext(ContextType.Machine);
    UserPrincipal newuser = new UserPrincipal(ctx, "newuser", "password", true);
    newuser.Save();
    
    GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx,"Users");
    
    using (DirectoryEntry groupEntry = group.GetUnderlyingObject() as DirectoryEntry )
    using (DirectoryEntry userEntry = newuser.GetUnderlyingObject() as DirectoryEntry)
    {
        groupEntry.Invoke( "Add", new object[] { userEntry.Path } );
        userEntry.RefreshCache();
    
        userEntry.Properties["msNPAllowDialin"].Value = true;
        userEntry.Properties["msTSRemoteControl"].Value = false;
    
        userEntry.CommitChanges();
    }
    

    帐户创建和用户组流程运行正常,

    userEntry.Properties["msNPAllowDialin"].Value = true;
    userEntry.Properties["msTSRemoteControl"].Value = false;
    

    两者都会产生错误

      

    在缓存

    中找不到目录属性

    我花了2个小时谷歌搜索,但仍然无法找到任何有效的解决方案。

1 个答案:

答案 0 :(得分:1)

您正在创建本地计算机帐户(ContextType.Machine),但之后尝试设置特定于Active Directory用户帐户的属性。那不会起作用。

如果您想将它们限制在服务器的VPN中,那么这取决于您使用的VPN类型。