Frage

Ich schreibe eine ASP.NET (C #) Anwendung Benutzer für meine Domain zu erstellen. Es hat auch Ordner und Freigaben auf einem separaten Dateiserver zu erstellen. Ich habe bisher in der Lage meine Aufgabe zu erfüllen mit

  • System.IO.Directory.CreateDirectory die Ordner zu erstellen,
  • a ( "WinNT: // Fileserver / lanmanserver"). Directory die Aktien erstellen

Leider meine ASP.NET-Anwendung hat mit Identitätswechsel laufen auf den Ordner zu erstellen. Ich mag das nicht. Ich möchte wissen, ob es einen Weg gibt, einen Ordner auf dem Dateiserver mit einem Directory-Objekt zu erstellen, da ich die erforderlichen Anmeldeinformationen an den Konstruktor übergeben kann. Oder alternativ ist es eine Möglichkeit, Anmeldeinformationen Directory.CreateDirectory passieren?

Vielen Dank im Voraus. Hier ist der aktuelle Code, nur für den Fall

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();
    }
}
War es hilfreich?

Lösung

Ich glaube nicht, dass Sie mit DirectoryObject zu diesem Zweck werden sollte, wurde es für einen solchen Zugang nicht gemacht. Aber hier ist ein Trick, den Sie verwenden werden könnten Identitätswechsel zu erleichtern. Erstellen Sie ein Imitator-Klasse, die IDisposable, so etwas wie dies umsetzen würde:

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

dann würden Sie in der Lage sein, dies zu tun:

using(new Impersonator("myaccount", "password"))
{
     ... do stuff that requires impersonation
}

Andere Tipps

Soweit ich weiß, haben Sie zwei Möglichkeiten: Identitätswechsel einen Benutzer, der über Berechtigungen verfügt das Verzeichnis auf der Remote-Freigabe zu erstellen oder die Berechtigungen für den Standardbenutzer zu geben, die asp.net-Dienste ausgeführt

.

Was ist daran falsch? Sie sind eine Nicht-Standard-Ressourcen im Netzwerk zugreifen und die Standardberechtigungen nicht erlauben Ihnen, das zu tun. Es ist ziemlich viel wie ein normales Benutzerkonto versucht, auf einer Netzwerkfreigabe zu schreiben.

Die Directory Klasse hat einen Konstruktor, der Benutzername und das Kennwort als Eingabe. Haben Sie versucht das?

Siehe Dokumentation zu Microsoft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top