- Verzeichnis.CreateDirectory Zugriff auf Pfad verweigert wird?
Habe ich die server-client-Anwendung, es ist ein Datei-manager
mein problem ist, wenn ich gehe in einen Ordner, die benötigt access control wie system-Ordner, es wird nur gelesen, aber muss ich verschieben/löschen oder neuen Ordner erstellen, wie bekomme ich die Erlaubnis, das zu tun?
hier ist, wie erstelle ich einen neuen Ordner auf der server-Seite
public void NewFolder(string path)
{
try
{
string name = @"\New Folder";
string current = name;
int i = 0;
while (Directory.Exists(path + current))
{
i++;
current = String.Format("{0} {1}", name, i);
}
Directory.CreateDirectory(path + current);
Explore(path); //this line is to refresh the items in the client side after creating the new folder
}
catch (Exception e)
{
sendInfo(e.Message, "error");
}
}
Sind Sie (oder der Benutzer Ihre Anwendung ausgeführt wird) in der Lage zu navigieren, um das angegebene Verzeichnis und erstellen Sie einen neuen Ordner mit dem standard-Betriebssystem-tools?
jetzt bin ich mit der Anwendung lokal , server-client ist der computer.. ich kann keine neuen Ordner erstellen, nur wenn ich in einen Ordner "system".
jetzt bin ich mit der Anwendung lokal , server-client ist der computer.. ich kann keine neuen Ordner erstellen, nur wenn ich in einen Ordner "system".
InformationsquelleAutor Murhaf Sousli | 2012-02-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es oft Verzeichnisse auf einem Laufwerk, das auch ein Benutzer mit Administratorrechten zugreifen können. Ein Verzeichnis mit einem Namen wie "HDDRecovery" ist es wahrscheinlich problematisch sein, wie dieser. Sicherlich ist es sensible Daten enthält, die den Benutzer hilft wiederherstellen von Datenträger-Ausfall. Ein anderes Verzeichnis für diese Kategorie ist "c:\system volume information" enthält restore point-Daten.
Einem admin ändern können Sie die Berechtigungen auf Ordner wie diese. Aber das löst nicht das eigentliche problem, noch ist es eine kluge Sache zu tun. Ihre Benutzer können nicht und sollte nicht. Werden Sie sicher, dass code zu schreiben, der sich mit permission-Probleme wie dieses, einfach, fangen die IOExeption. Halten Sie die Benutzer aus der Patsche, indem Sie niemals zeigt, ein Verzeichnis, das hat das Hidden-oder System-Attribut gesetzt. Sie sind die "don' T mess with me" - Attribute.
Der Benutzer kann nicht Durcheinander mit solchen Dateien ohne UAC-elevation. Das erfordert ein manifest eingebettet in die ausführbare Datei, um die Windows-Anzeige der UAC-Eingabeaufforderung. Klicken Sie auf "Frage stellen" - Taste, wenn Sie nicht wissen, wie dies zu tun, und nicht finden können, eine andere Frage ist es, wie SO.
sir, ich erhalte die gleiche Fehlermeldung beim erstellen der Ordner. Was also Ausnahmen, an die ich überprüfen sollte ??
strReportDirectory = ConfigurationRead.GetAppSetting("ReportDirectory") + "\\"; strDateFolder = strReportDirectory + DateTime.Now.ToString("dd_MM_yyyy"); if (!Directory.Exists(strDateFolder)) { Directory.CreateDirectory(strDateFolder); } strFilePath = strDateFolder + "\\" + "Report.xlsx";
Es wird ausdrücklich erwähnt in der Antwort. IOException ist eine "es funktioniert nicht" Ausnahme. Es gibt nichts, was Sie tun können it yourself. Haben Sie entweder aufhören zu versuchen, oder, mehr allgemein, zeigen Sie dem Benutzer die Message-Eigenschaft, so kann er Gegenmaßnahmen einleiten. Lassen Sie Ihre Programm-Bombe ist auch oft ganz akzeptabel, wenn der Fehler nicht lassen Ihr Programm seine Arbeit machen. Nur stellen Sie sicher, dass der Benutzer weiß, warum.
InformationsquelleAutor Hans Passant
Wenn Sie entfernen möchten directory-read-only-Attribut verwenden: http://social.msdn.microsoft.com/Forums/en/vblanguage/thread/cb75ea00-f9c1-41e5-ac8e-296c302827a4
Wenn Sie Zugriff auf system-Ordner können Sie Ihre Programme als lokaler administrator an.
InformationsquelleAutor user1227804
Ich lief auch ein Problem ähnlich wie diese, aber ich war in der Lage, manuell navigieren Sie über den Windows-Explorer und erstellen Verzeichnisse.
Jedoch, meine web-app läuft in VS auf meinem laptop, veranstaltet durch meinen lokalen IIS und nicht die integrierten IIS-Angebot für VS, war die Auslösung der Zugriff Verweigert Problem.
So, wenn ich traf den Fehler im code, bohrte ich nach unten zu Lesen mehr Daten aus dem System.Umfeld-Objekt und fand den Benutzer, die war natürlich der App-Pool, dass meine app läuft unter IIS.
Also öffnete ich IIS und öffnete die Erweiterten Einstellungen für die app-pool in Frage und verändert die Identität für die Ausführung unter Netzwerk-Service. Klicken Sie auf "OK". "cmd -> iisreset" für eine gute Maßnahme. Versuchen Sie die app erneut, und ERFOLG!!!!
Danke! Dieser wies mich in die richtige Richtung, ich musste angeben, die der Benutzer in der IIS-App-Pool
InformationsquelleAutor Joe de la Forms
Ich hatte das gleiche Problem beim erstellen von einem Verzeichnis. Ich verwendet, DirectorySecurity wie unten gezeigt:
Auch Bedenken über die Sicherheit erklärt sich durch Hans Passant die Antwort.
Vollständigen details finden Sie auf MSDN.
So der vollständige code:
InformationsquelleAutor Dush
Mein Verdacht ist, dass beim ausführen der Anwendung in client/server-Modus, der server Teil muss als Administrator ausgeführt werden, zusätzlich zu möglicherweise das entfernen nur-Lesen-oder system-flags, in der Lage sein, das zu tun, was Sie wollen.
Sagte, ich Stimme mit @HansPassant - es klingt wie das, was Sie versuchen zu tun, ist schlecht beraten.
InformationsquelleAutor Chris Shain
Gelöst:
Erstellte Verzeichnis auf remote-server mit folgenden code & Einstellung.
Test ist Ziel-Ordner, in dem das erstellen neuer Test1 Ordner(Verzeichnis)
InformationsquelleAutor Ayaat Shifa
Ich hatte ein ähnliches problem (asp.net MVC vs2017) mit diesem code:
Verzeichnis.CreateDirectory("~/temp");
Hier ist meine Lösung:
System.IO.- Verzeichnis.CreateDirectory
(System.Web.HttpContext.Aktuelle.Server.MapPath("~/temp"));
InformationsquelleAutor Darren