调用的CommitChanges()什么也不做在Active Directory? [英] Calling commitChanges() does nothing in Active Directory?

查看:159
本文介绍了调用的CommitChanges()什么也不做在Active Directory?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看来,所做的更改不会在ActiveDirectory中,尽管我使用的CommitChanges功能节省。我使用正确的方法来解决这个问题呢?

  //测试OU组:OU =第一组,OU =域用户,DC =域,DC = COM
字符串用户名,密码;

Console.Write(用户名:);
的userName =到Console.ReadLine();
Console.Write(密码:);
密码=到Console.ReadLine();

//在此处输入AD用户帐户验证code

字符串strLDAPpath =LDAP:// OU =第一组,OU =域Uers,DC =域,DC = COM;
的DirectoryEntry条目=新的DirectoryEntry(strLDAPpath,用户名,密码,AuthenticationTypes.Secure);
//的DirectoryEntry条目=新的DirectoryEntry(strLDAPpath);
DirectorySearcher从mySearcher =新DirectorySearcher从(输入);
mySearcher.Filter =(objectCategory属性=用户);
的foreach()信息搜索结果结果mySearcher.FindAll()
{
    IADsTSUserEx entryX =(IADsTSUserEx)result.GetDirectoryEntry()NativeObject。
    INT IsTrue运算= 1;
    entryX.ConnectClientDrivesAtLogon = IsTrue运算;
    entryX.ConnectClientPrintersAtLogon = IsTrue运算;
    entryX.DefaultToMainPrinter = IsTrue运算;
    result.GetDirectoryEntry()的CommitChanges()。
}
Console.WriteLine(进行了更改preSS回车键继续......。);
到Console.ReadLine();
////进入=新的DirectoryEntry(strLDAPpath,用户名,密码,AuthenticationTypes.Secure);
// mySearcher =新DirectorySearcher从(输入);
//mySearcher.Filter =(objectCategory属性=用户);
的foreach()信息搜索结果结果mySearcher.FindAll()
{
    IADsTSUserEx entryX =(IADsTSUserEx)result.GetDirectoryEntry()NativeObject。
    Console.WriteLine(result.GetDirectoryEntry()。属性[名称]。值+\ t+驱动器+ entryX.ConnectClientDrivesAtLogon +\ t+打印机+ entryX.ConnectClientPrintersAtLogon +\ t+ 默认+ entryX.DefaultToMainPrinter);
}
entry.Close();
到Console.ReadLine();
 

解决方案

好了,你就抓住了底层对象,修改它,然后抓住一个更多的时间和调用的CommitChanges()就可以了....我想这不会以这种方式工作。

试试这个:

  mySearcher.Filter =(objectCategory属性=用户);

的foreach()信息搜索结果结果mySearcher.FindAll()
{
     的DirectoryEntry resultEntry = result.GetDirectoryEntry();
     IADsTSUserEx entryX =(IADsTSUserEx)resultEntry.NativeObject;

     INT IsTrue运算= 1;
     entryX.ConnectClientDrivesAtLogon = IsTrue运算;
     entryX.ConnectClientPrintersAtLogon = IsTrue运算;
     entryX.DefaultToMainPrinter = IsTrue运算;

     resultEntry.CommitChanges();
 }
 

这是否能改变什么?是否现在的工作?

It seems that the changes are not saving within ActiveDirectory despite me using the CommitChanges function. Am I using the correct approach to solve this issue?

//Test OU Group: OU=First Group,OU=Domain Users,DC=DOMAIN,DC=com
String userName, password;

Console.Write("Username: ");
userName = Console.ReadLine();
Console.Write("Password: ");
password = Console.ReadLine();

//ENTER AD user account validation code here

String strLDAPpath = "LDAP://OU=First Group,OU=Domain Uers,DC=DOMAIN,DC=com";
DirectoryEntry entry = new DirectoryEntry(strLDAPpath,userName,password,AuthenticationTypes.Secure);
//DirectoryEntry entry = new DirectoryEntry(strLDAPpath);
DirectorySearcher mySearcher = new DirectorySearcher(entry);
mySearcher.Filter = "(ObjectCategory=user)";
foreach (SearchResult result in mySearcher.FindAll())
{
    IADsTSUserEx entryX = (IADsTSUserEx)result.GetDirectoryEntry().NativeObject;
    int isTrue = 1;
    entryX.ConnectClientDrivesAtLogon = isTrue;
    entryX.ConnectClientPrintersAtLogon = isTrue;
    entryX.DefaultToMainPrinter = isTrue;
    result.GetDirectoryEntry().CommitChanges();        
}
Console.WriteLine("Changes have been made. Press Enter to continue...");
Console.ReadLine();
////entry = new DirectoryEntry(strLDAPpath, userName, password, AuthenticationTypes.Secure);
//mySearcher = new DirectorySearcher(entry);
//mySearcher.Filter = "(ObjectCategory=user)";
foreach(SearchResult result in mySearcher.FindAll())
{
    IADsTSUserEx entryX = (IADsTSUserEx)result.GetDirectoryEntry().NativeObject;
    Console.WriteLine(result.GetDirectoryEntry().Properties["name"].Value + "\t" + "Drives " + entryX.ConnectClientDrivesAtLogon + "\t" + "Printers " + entryX.ConnectClientPrintersAtLogon + "\t" + "Default " + entryX.DefaultToMainPrinter);
}
entry.Close();
Console.ReadLine();

解决方案

Well, you're grabbing the underlying object, modifying it, and then grabbing it one more time and calling CommitChanges() on it.... I think this won't work this way.

Try this:

mySearcher.Filter = "(ObjectCategory=user)";

foreach (SearchResult result in mySearcher.FindAll())
{
     DirectoryEntry resultEntry = result.GetDirectoryEntry();
     IADsTSUserEx entryX = (IADsTSUserEx)resultEntry.NativeObject;

     int isTrue = 1;
     entryX.ConnectClientDrivesAtLogon = isTrue;
     entryX.ConnectClientPrintersAtLogon = isTrue;
     entryX.DefaultToMainPrinter = isTrue;

     resultEntry.CommitChanges();        
 }

Does that change anything? Does it work now??

这篇关于调用的CommitChanges()什么也不做在Active Directory?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆