2009-10-02 2 views
1

내 도메인 사용자를 만들려면 ASP.NET (C#) 응용 프로그램을 작성하고 있습니다. 또한 별도의 파일 서버에 폴더와 공유를 만들어야합니다. (": // 파일 서버 /에 lanmanserver Winnt는")하여 DirectoryEntry 주식을 만들기 위해 지금까지 DirectoryEntry를 사용하여 폴더 만들기

  • 이 폴더를 만들 수

    • System.IO.Directory.CreateDirectory를 사용하여 내 작업을 수행 할 수 있었다.

    불행히도 내 ASP.NET 응용 프로그램은 폴더를 만들 때 가장을 사용하여 실행해야합니다. 나는 그것을 좋아하지 않는다. 나는 그 생성자에 필요한 자격 증명을 전달할 수 있기 때문에 DirectoryEntry 객체를 사용하여 파일 서버에 폴더를 만드는 방법이 있는지 알고 싶습니다. 또는 Directory.CreateDirectory에 자격 증명을 전달하는 방법이 있습니까?

    미리 감사드립니다. 나는 당신이 두 가지 옵션이 있습니다 알고 여기

    strPath = "\\myServer\D$\newDir"; 
    Directory.CreateDirectory(strPath); 
    
    using (DirectoryEntry deFS = new DirectoryEntry("WinNT://myServer/lanmanserver")) 
    { 
        using (DirectoryEntry deSH = deFS.Children.Add("newDir$", "fileshare")) 
        { 
         deSH.Properties["path"].Value = "D:\\newDir"; 
         deSH.Properties["description"].Value = "My Stackoverflow sample share"; 
         deSH.CommitChanges(); 
        } 
    } 
    

    답변

    0

    그 목적으로 DirectoryObject를 사용해야한다고 생각하지 않습니다. 그런 액세스를 위해 만들어지지 않았습니다. 그러나 가장을 쉽게하기 위해 사용할 수있는 트릭이 있습니다. 는 IDisposable, 이런 식으로 뭔가를 구현하는 것이 악의의 클래스를 만듭니다

    다음
    public class Impersonator : IDisposable 
    { 
        public Impersonator(userid, password) 
        { 
         ... LogonUserEx(); 
         ... DuplicateToken(); 
         ... Impersonate(); 
        } 
        public void Dispose() 
        { 
         ... RevertToSelf(); 
        } 
    } 
    

    이 작업을 수행 할 수있을 것입니다 :

    하여 DirectoryEntry 클래스는 입력으로 사용자 이름과 암호를 가지고 생성자를 가지고
    using(new Impersonator("myaccount", "password")) 
    { 
        ... do stuff that requires impersonation 
    } 
    
    +0

    덕분에 많이 사용하는 폴더를 만들 수 있습니다. 이 솔루션은 나에게 도움이 될 것입니다. 나는 가장의 세부 사항에 대해 할 일이 있습니다. – birukw

    0

    지금까지 단지의 경우, 현재의 코드입니다 : 기본 사용자에게 권한을 원격 공유의 디렉토리를 만들거나 제공 할 수있는 권한이있는 사용자를 가장하는 asp.net 서비스를 실행합니다.

    무엇이 잘못 되었나요? 네트워크의 기본이 아닌 리소스에 액세스하고 있으며 기본 권한으로는 할 수 없습니다. 네트워크 공유에 쓰려고하는 일반 사용자 계정과 거의 같습니다.

    +0

    나는 그 asp.net 프로그래밍에 익숙하지 오전하지만 난 권한 계정을 사용하여 asp.net 프로세스를 실행하는 공격 가능성에 내 시스템을 열고 내가 그걸 원하지 않는 것으로 가정합니다. 필요할 때만 특권을 얻을 수 있다면 좋을 것입니다. 아니면 내가 그 모든 걸 오해 했니? – birukw

    +0

    System.DirectoryServices에서 WinNT 공급자를 사용하는 것에 대한 충분한 설명서를 찾을 수 없어 궁금합니다. 논리적으로 그 – birukw