2010-08-13 7 views
1

나는이 기능을 실행하려면, 또는 적어도 다른 자격 증명을 사용하여 AD에서 컴퓨터 계정을 삭제 비트가 :코드에서 대체 자격 증명을 지정하려면 어떻게해야합니까?

public static void DeleteMachineAccount(String MachineName) 
     { 
      String MachineLdapPath = LdapPath(MachineName); 
      String OuLdapPath = MachineLdapPath.Replace("CN=" + MachineName + ",", ""); 

      Console.WriteLine(MachineLdapPath); 
      Console.WriteLine(OuLdapPath); 

      if (DirectoryEntry.Exists(MachineLdapPath)) 
      { 
       try 
       { 
        DirectoryEntry MachineOu = new DirectoryEntry(OuLdapPath); 
        DirectoryEntry MachineToDelete = new DirectoryEntry(MachineLdapPath); 
        MachineOu.Children.Remove(MachineToDelete); 
        MachineToDelete.CommitChanges(); 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine(e.Message.ToString()); 
       } 
      } 

     } 

합니다 (LdapPath 기능은 지정된 컴퓨터 이름에 대한 LDAP 경로를 반환합니다.)

이 인증서를 실행하려면 어떻게/다른 자격 증명을 지정해야합니까? 현재 사용하고있는 계정에 권한이 없으므로 액세스가 거부됩니다.

감사합니다,

답변

1

인증을 제공하는 DirectoryEntry 클래스의 오버로드를 사용할 수 있습니다. 그러면이 특정 사용자의 권한으로 LDAP 쿼리가 DirectoryServices에서 실행됩니다. 주의 할 점은 자격 증명 (사용자가 저장하거나 입력해야하는)을 전달해야하므로 처리 방법에주의해야합니다. 일반 텍스트로 저장하면 시스템 보안 문제가 발생할 수 있습니다.

New DirectoryEntry(ldapRoot, _activeDirectoryUsername, _activeDirectoryPassword); 
0

당신은 가장을 사용해야합니다. 이를 수행하는 가장 쉬운 방법은 실제로이 메소드를 호출 한 사람의 권한을 실제로 빌려 오는 것입니다. 예를 들어 명명 된 파이프 또는 WCF 호출에서이 호출을 호출하는 경우 호출자를 가장하여이를 대신하여이를 수행하는 기본 제공 방법이 있습니다.

관련 문제