2010-01-26 7 views
3

CommitChanges 함수를 사용하여 변경 내용을 ActiveDirectory 내에서 저장하지 않는 것 같습니다. 이 문제를 해결하기 위해 올바른 방법을 사용하고 있습니까?commitChanges() 호출은 Active Directory에서 아무 일도하지 않습니까?

//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(); 

답변

2

글쎄, 당신은, 기본 객체를 잡아 그것을 수정 한 다음 한 번 더 잡아 그 위에() CommitChanges를 호출하고 .... 나는이 이런 식으로 작동하지 않습니다 생각합니다.

이 시도 : 아무것도 변경

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();   
} 

합니까를? 그것은 지금 작동합니까 ??

관련 문제