Zum Inhalt springen

System.UnauthorizedAccess bei Zugriff auf E oder sonstige Partitionen


Empfohlene Beiträge

Geschrieben

Mahlzeit,

wie man im Thema > c# Console - Datensicherung mit .csv Input (Quelle/Ziel) < lesen kann schreibe ich derzeit ein Tool das mir alle Dateien kopieren soll. Theoretisch wäre ich fertig, aber ich habe Probleme damit z.b. E:\, D:\ oder C:\ als Source anzugeben und anschließend zu kopieren.

Alles andere funktioniert soweit wenn es sich in einem Ordner befindet, aber was bringt ein Sicherungstool wenn es bei einer Platte versagt?

Das ist die Fehlermeldung: Eine Ausnahme (erste Chance) des Typs "System.UnauthorizedAccessException" ist in mscorlib.dll aufgetreten.

Ich habe schon ein paar Variante versucht, aber irgendwie übersehe ich was und hoffe Ihr könnt mir einen Tipp geben :-)

VS selbst habe ich mit der Release Exe als Admin versucht, aber auch das führte bisweilen nicht zum gewünscht ergebnis :-(

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Diagnostics;

using System.Threading;


namespace SaveMe

{

    class Program

    {

        private static string[] values;

        static void Main(string[] args)

        {

            // Angabe Ziel und Quellverzeichnis & Error Log

            string source = @GetApplicationsPath() + "config.txt";

            string eLogD = @GetApplicationsPath() + "ErrorLog.txt";


            // Zeitstempel

            DateTime today = DateTime.Now;


            // Angaben und Erfolgsausgabe(n)

            string waitfile = ("Bitte warten... Die Sicherung der Dateien von ");

            string waitfileb = (" nach ");

            string waitfilec = (" wird aktuell erstellt!");

            string waitpath = ("Bitte warten... Die Sicherung der Verzeichnisse ");

            string waitpathb = (" nach ");

            string waitpathc = (" wird aktuell erstellt!");

            string succ = ("Die Sicherung der Dateien war Erfolgreich.\n");


            // Fehlerausgabe(n)

            string cd = (DateTime.Now + " Die Configdatei (" + source + ") existiert nicht!\n");


            // Abfrage ob Configdatei existiert...

            if (File.Exists(source))

            {

                StreamReader sr = new StreamReader(source);


                string inputLine = ("");


                int i = 0;


                while ((inputLine = sr.ReadLine()) != null)

                {

                    i++;

                    values = inputLine.Split(new Char[] { ';' });


                    for (int j = 0; j < values.Length; j++)

                    {

                        string ez = values[j];

                    }


                    string csvsource = values[0];

                    string csvtarget = values[1];


                    DirectoryInfo ParentDirectory = new DirectoryInfo(csvsource);


                    string dne = (DateTime.Now + " Das angegebene Verzeichnis (" + csvsource + ") existiert nicht!\n");

                    string zws = (DateTime.Now + " Es ist nicht genug Speicher vorhanden damit die Datei vollständig gelesen werden kann!\n");

                    string dwng = (DateTime.Now + " Die Datei(en) wurde(n) nicht gefunden!\n");

                    string kzgb = (DateTime.Now + " Keine Zugriffsberechtigung im Zielordner (" + csvtarget + ")! Entfernen Sie den Schreib- und/oder Leseschutz der zu überschreibenden Datei oder benennen Sie die Datei um!\n");

                    string sf = (DateTime.Now + " Ein nicht bedachter Fehler ist aufgetreten...!\n");

                    string up = (DateTime.Now + " Das Format des angegebenen Pfades ist Ungültig!\n");

                    string dpizl = (DateTime.Now + " Der eingetragene Pfad oder Dateiname ist zu lang.\nAuf Windows-Plattformen dürfen Pfade nicht länger als 247 Zeichen und Dateinamen nicht länger als 259 Zeichen sein.\n");

                    string au = (DateTime.Now + " Eines der Argumente ist ungültig!\n");

                    string ea = (DateTime.Now + " Ein E/A Fehler ist aufgetreten!\n");


                    try

                    {

                        // Wertausgabe

                        // int pathLen = csvsource.Length +1;


                        // Suchen, Kombinieren und Überschreiben der Pfade

                        foreach (string d in Directory.GetDirectories(csvsource, "*", SearchOption.AllDirectories))

                        {

                            string subPath = d.Substring(3);

                            string newpath = Path.Combine(csvtarget, subPath);

                            Directory.CreateDirectory(newpath);

                            DirectoryInfo DI = new DirectoryInfo(newpath);

                            DI.Attributes = FileAttributes.Normal;

                            // Bitte Warten Ausgabe

                            Console.WriteLine(waitpath + d + waitpathb + newpath + waitpathc);

                        }


                        // Suchen, Kombinieren und Überschreiben der Dateien mit den Pfaden 

                        foreach (string f in Directory.GetFiles(csvsource, "*", SearchOption.AllDirectories))

                        {

                            string subPath = f.Substring(3);

                            string newpath = Path.Combine(csvtarget, subPath);

                            string test = Path.GetDirectoryName(newpath);

                            //Console.WriteLine(test);                            

                            if (!Directory.Exists(test))

                            {                                

                                Directory.CreateDirectory(test);

                                DirectoryInfo DI = new DirectoryInfo(test);

                                DI.Attributes = FileAttributes.Normal;

                            }

                            File.Copy(f, newpath, true);

                            File.SetAttributes(newpath, FileAttributes.Normal);

                            // Bitte Warten Ausgabe

                            Console.WriteLine(waitfile + f + waitfileb + newpath + waitfilec);

                        }

                        // Sicherung Erfolgreich Ausgabe

                        Console.WriteLine(succ);

                    }

                    catch (OutOfMemoryException)

                    {

                        // Fehlerausgabe Zu wenig Speicher...

                        File.AppendAllText(eLogD, zws);

                        Console.WriteLine(zws);

                        Console.ReadLine();

                    }

                    catch (FileNotFoundException)

                    {

                        // Fehlerausgabe Datei existiert nicht...

                        File.AppendAllText(eLogD, dwng);

                        Console.WriteLine(dwng);

                        Console.ReadLine();

                    }

                    catch (UnauthorizedAccessException)

                    {

                        // Fehlerausgabe Zugriffsrechte auf das Zielverzeichnis unzureichend...

                        File.AppendAllText(eLogD, kzgb);

                        Console.WriteLine(kzgb);

                        Console.ReadLine();

                    }

                    catch (NotSupportedException)

                    {

                        // Fehlerausgabe Methode wird nicht unterstützt...

                        File.AppendAllText(eLogD, up);

                        Console.WriteLine(up);

                        Console.ReadLine();

                    }

                    catch (PathTooLongException)

                    {

                        // Fehlerausgabe angegebener Pfad ist zu lang...

                        File.AppendAllText(eLogD, dpizl);

                        Console.WriteLine(dpizl);

                        Console.ReadLine();

                    }

                    catch (DirectoryNotFoundException)

                    {

                        // Fehlerausgabe Quellverzeichnis existiert nicht...

                        File.AppendAllText(eLogD, dne);

                        Console.WriteLine(dne);

                        Console.ReadLine();

                    }

                    catch (ArgumentException)

                    {

                        // Fehlerausgabe eines falschen Arguments...

                        File.AppendAllText(eLogD, au);

                        Console.WriteLine(au);

                        Console.ReadLine();

                    }                   

                    catch (IOException)

                    {

                        // Fehlerausgabe E/A Fehler...

                        File.AppendAllText(eLogD, ea);

                        Console.WriteLine(ea);

                        Console.ReadLine();

                    }

                    catch (Exception)

                    {

                        // Fehlerausgabe sonstige Fehler...

                        File.AppendAllText(eLogD, sf);

                        Console.WriteLine(sf);

                        Console.ReadLine();

                    }

                }

            }

            else

            {

                // Fehlerausgabe Configdatei existiert nicht...                

                File.AppendAllText(eLogD, cd);

                Console.WriteLine(cd);

            }

        }

        public static string GetApplicationsPath()

        {

            return Thread.GetDomain().BaseDirectory;

        } 

    }

}

Geschrieben

Aye dem stimme ich zu und ich denke diesbezüglich sollte ich als Admin der laut Anzeige "Vollzugriff" hat auf die Platten das Tool ohne Probleme ausführen. Funktioniert aber nicht. Auch nicht die Möglichkeit > Eigenschaften > Programm als Administrator ausführen. Auf diesem Rechner gibt es nur Vollzugriff, nichts abgespecktes.

Das Problem tritt auch nur auf wenn ich z.b.

E:\

D:\

als Quelle angebe...Mache ich ein

E:\Verzeichnis

D:\Quelle

z.b. das nach C:\backup kopiert werden soll, habe ich keine Probleme. Das läuft einwandfrei durch.

Geschrieben

Hallo

wenn E:\ und D:\ Netzwerkverzeichnisse sind kann es doch durchaus sein, dass du als LOKALER Administrator auf diesen Verzeichnissen keine Lese / Schreibrechte hast. Auf den Unterverzeichnissen wiederrum kann es wieder anders aussehen.

Gruß Hans-Jörg

Geschrieben

Ne das sind Platten/Partitionen auf "Frida". C:\ und E:\ Partitionen und D:\ eine eigene Platte.

Ich habe jetzt vorläufig eine Abfrage if File.Exists(csvsource) und Directory.Exists mit eingebaut was die Fehlerquote mit der Ändern von

GetDirectorys & GetFiles sind nun statt Get ein Enumerate was mir möglich machte die z.b. volume Ordner auch kopiert und nicht daran stirbt. Aber irgendwas gibt es noch was mir eine System.UnauthorizedAccess wirft :rolleyes:

Geschrieben

Noch mehr Versteckt und Geschützt als Recycle.bin und Volume System Inf & Co auf einer nicht vom System verwendeten Platte? Ausser meinen zu Testzwecken verwendeten Dateien ist "Sichtbar" nichts darauf. Wenn ich an die anderen versteckten usw. ran komme sollte ich doch eigentlich an den Rest auch ran kommen!?

Geschrieben

Ich habe darüber Sinnfrei überlegt und das DirectoryInfo ParentDirectory = new DirectoryInfo(csvsource); heraus kommentiert... Nun funktioniert es scheinbar wie ich es wollte.

Auf die Idee kam ich beim Studium der system.io.directory Seite. Scheinbar ist zuviel Info manchmal einfach hinderlich. Sollte jemand der NSA sagen :D

  • 2 Wochen später...
Geschrieben

War natürlich ein Scherz das es das war... :floet:

Ich bin inzwischen soweit gediehen das ich bei einem Fehler wie z.b. UnauthorizedAccessExeption keinen komplett Abbruch habe. Das Programm springt dann zum nächsten Ordner weiter.

Allerdings verstehe ich immer noch nicht warum ich da auf mir unbekanntes keinen Zugriff habe. :rolleyes:

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using Microsoft.VisualBasic;

using System.Diagnostics;

using System.Threading;


namespace SaveMe

{

    class Program

    {

        private static string[] values;

        static void Main(string[] args)

        {

            // Angabe Ziel und Quellverzeichnis & Error Log

            string source = @GetApplicationsPath() + "config.txt";            

            string eLogD = @GetApplicationsPath() + "ErrorLog.txt";


            // Zeitstempel

            DateTime today = DateTime.Now;


            // Angaben und Erfolgsausgabe(n)

            string waitfile = ("Bitte warten... Die Sicherung der Dateien von ");

            string waitfileb = (" nach ");

            string waitfilec = (" wird aktuell erstellt!");

            string waitpath = ("Bitte warten... Die Sicherung der Verzeichnisse ");

            string waitpathb = (" nach ");

            string waitpathc = (" wird aktuell erstellt!");

            string succ = ("Die Sicherung der Dateien war Erfolgreich.\n");


            // Fehlerausgabe(n)

            string cd = (DateTime.Now + " Die Configdatei (" + source + ") existiert nicht!\n");

            string dne2 = (DateTime.Now + " Die Datei oder das zu kopierende Verzeichnis existiert nicht!\n");


            // Abfrage ob Configdatei existiert...

            if (File.Exists(source))

            {

                StreamReader sr = new StreamReader(source);               


                string inputLine = ("");


                int i = 0;


                while ((inputLine = sr.ReadLine()) != null)

                {

                    i++;                    

                    values = inputLine.Split(new Char[] { ';' });


                    for (int j = 0; j < values.Length; j++)

                    {

                        string ez = values[j];

                    }


                    string csvsource = values[0];

                    string csvtarget = values[1];


                    string dne = (DateTime.Now + " Das angegebene Verzeichnis (" + csvsource + ") existiert nicht!\n");

                    string zws = (DateTime.Now + " Es ist nicht genug Speicher vorhanden damit die Datei vollständig gelesen werden kann!\n");

                    string dwng = (DateTime.Now + " Die Datei(en) wurde(n) nicht gefunden!\n");

                    string kzgb = (DateTime.Now + " Hinweis: Keine Zugriffsberechtigung! (" + csvsource + ") Entfernen Sie den Schreib- und/oder Leseschutz der zu überschreibenden Datei oder benennen Sie die Datei um!\n");

                    string sf = (DateTime.Now + " Ein nicht bedachter Fehler ist aufgetreten...!\n");

                    string up = (DateTime.Now + " Das Format des angegebenen Pfades ist Ungültig!\n");

                    string dpizl = (DateTime.Now + " Der eingetragene Pfad oder Dateiname ist zu lang.\nAuf Windows-Plattformen dürfen Pfade nicht länger als 247 Zeichen und Dateinamen nicht länger als 259 Zeichen sein.\n");

                    string au = (DateTime.Now + " Eines der Argumente ist ungültig!\n");

                    string ea = (DateTime.Now + " Ein E/A Fehler ist aufgetreten!\n");

                    string fidc = (DateTime.Now + " Die Configurationsdatei (" + source + ") darf keine leeren Zeilen enthalten! Initialisierung des BackUp's war daher leider nicht möglich oder nur teilweise erfolgreich\n");


                    if (File.Exists(csvsource) | Directory.Exists(csvsource))

                    {

                        try

                        {

                            // Suchen, Kombinieren und Überschreiben der Pfade

                            foreach (string d in Directory.EnumerateDirectories(csvsource, "*", SearchOption.AllDirectories))

                            {

                                string subPath = d.Substring(3);

                                string newpath = Path.Combine(csvtarget, subPath);

                                Directory.CreateDirectory(newpath);

                                //Bitte Warten Ausgabe

                                Console.WriteLine(waitpath + d + waitpathb + newpath + waitpathc);

                            }


                            // Suchen, Kombinieren und Überschreiben der Dateien mit den Pfaden 

                            foreach (string f in Directory.EnumerateFiles(csvsource, "*", SearchOption.AllDirectories))

                            {

                                string subPath = f.Substring(3);

                                string newpath = Path.Combine(csvtarget, subPath);

                                string test = Path.GetDirectoryName(newpath);

                                //Console.WriteLine(test);                            

                                if (!Directory.Exists(test))

                                {

                                    Directory.CreateDirectory(test);

                                }

                                File.Copy(f, newpath, true);

                                File.SetAttributes(newpath, FileAttributes.Normal);

                                // Bitte Warten Ausgabe

                                Console.WriteLine(waitfile + f + waitfileb + newpath + waitfilec);

                            }

                            // Sicherung Erfolgreich Ausgabe

                            Console.WriteLine(succ);

                        }

                        catch (OutOfMemoryException)

                        {

                            // Fehlerausgabe Zu wenig Speicher...

                            File.AppendAllText(eLogD, zws);

                            Console.WriteLine(zws);

                        }

                        catch (FileNotFoundException)

                        {

                            // Fehlerausgabe Datei existiert nicht...

                            File.AppendAllText(eLogD, dwng);

                            Console.WriteLine(dwng);

                        }

                        catch (UnauthorizedAccessException)

                        {

                            // Fehlerausgabe Zugriffsrechte auf das Zielverzeichnis unzureichend...

                            File.AppendAllText(eLogD, kzgb);

                            Console.WriteLine(kzgb);

                        }

                        catch (NotSupportedException)

                        {

                            // Fehlerausgabe Methode wird nicht unterstützt...

                            File.AppendAllText(eLogD, up);

                            Console.WriteLine(up);

                        }

                        catch (PathTooLongException)

                        {

                            // Fehlerausgabe angegebener Pfad ist zu lang...

                            File.AppendAllText(eLogD, dpizl);

                            Console.WriteLine(dpizl);

                        }

                        catch (DirectoryNotFoundException)

                        {

                            // Fehlerausgabe Quellverzeichnis existiert nicht...

                            File.AppendAllText(eLogD, dne);

                            Console.WriteLine(dne);

                        }

                        catch (ArgumentException)

                        {

                            // Fehlerausgabe eines falschen Arguments...

                            File.AppendAllText(eLogD, au);

                            Console.WriteLine(au);

                        }

                        catch (IOException)

                        {

                            // Fehlerausgabe E/A Fehler...

                            File.AppendAllText(eLogD, ea);

                            Console.WriteLine(ea);

                        }

                        catch (IndexOutOfRangeException)

                        {

                            // Fehlerausgabe Fehler in der Configdatei

                            File.AppendAllText(eLogD, fidc);

                            Console.WriteLine(fidc);

                        }

                        catch (Exception)

                        {

                            // Fehlerausgabe sonstige Fehler...

                            File.AppendAllText(eLogD, sf);

                            Console.WriteLine(sf);

                        }

                    }

                    else

                    {

                        File.AppendAllText(eLogD, dne2);

                        Console.WriteLine(dne2);

                    }

                } // Ende While - Orientierungspunkt

            }

            else

            {

                // Fehlerausgabe Configdatei existiert nicht...                

                File.AppendAllText(eLogD, cd);

                Console.WriteLine(cd);

            }

        }

        public static string GetApplicationsPath()

        {

            return Thread.GetDomain().BaseDirectory;

        }

    }

}

Die Frage ist nun WAS ist das und WIE kann ich das "überspringen" oder kopieren wie den Rest?!? :confused:

Ich bin Admin - VS wird Admin ausgeführt und die .exe wird als Admin ausgeführt, aber immer den "batscher" auf die Finger :(

Geschrieben

Ich kam gerade auf die gloreiche Idee mir mal den Fehler in der Konsole anzusehen und bin überrascht:

System.Unauthorized... Der Zugriff auf den Pfad D:\System Volume Information wurde verweigert.

bei System.IO.__Error.WinIOErorror(int32 errorCode, String maybeFullPath)

bei System.IO.FileSystemEnumerableIterator'1.AddSearchableDirsToStack(SearchData localSearchData)

bei System.IO.FileSystemEnumerableIterator'1.MoveNext()

bei...[]...Zeile 78 (foreach (string d in Directory.EnumerateDirectories(csvsource, "*", SearchOption.AllDirectories)))

Geschrieben

Bspw. eine Extension-Methode schreiben, die die Exception abfängt und statt dessen einen Boolean-Wert zurück gibt.


    public static class DirectoryInfoExtensions

    {

        public static bool IsAuthorized(this DirectoryInfo self)

        {

            try

            {

                var directorySecurity = self.GetAccessControl();


                return true;


            }

            catch (UnauthorizedAccessException ex)

            {

                return false;

            }

        }

    }

Benutzung:

            var directoryInfo = new DirectoryInfo(root);

            var directories = directoryInfo.GetDirectories();


            foreach (var directory in directories)

            {

                if (!directory.IsAuthorized())

                {

                    Console.WriteLine(directory.FullName);

                }

            }

Geschrieben

Ich habe mich schon gefragt was ich mit den Extensions soll :D

Aber ich überlege gerade folgende Variante abzufragen


bool isReadOnly = ((File.GetAttributes(csvsource oder f) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly);

bool isHidden = ((File.GetAttributes(csvsource oder f) & FileAttributes.Hidden) == FileAttributes.Hidden);

bool isArchive = ((File.GetAttributes(csvsource oder f) & FileAttributes.Archive) == FileAttributes.Archive);

bool isSystem = ((File.GetAttributes(csvsource oder f) & FileAttributes.System) == FileAttributes.System);

Sollte mir theoretisch alles derartiges bei einer If Abfrage raus filtern... aber davor ist blöd und danach ist blöd... Wie Frage ich also etwas ab das noch nicht bekannt ist? Ich kenn nun nichts in c# das mir via boolschen Wert aufzeigt ob ich Zugriff habe oder nicht!? Wäre das davor/danach Problem nicht könnte... könnte man dies via einfache IF Abfrage lösen...

Gibt es keine Möglichkeit das Tool als System laufen zu lassen? (Wie ich inzwischen erlaß kann man als Admin auf die SVI nicht zugreifen auch wenn lieb bettelst) Dann sollte ich ja automatisch keine Probleme mehr haben. Theopraktisch!?

Geschrieben

Dein Code wird noch unleserlicher mit dem Konstrukt.

Einfacher wäre bei der Varante mit dem Attribute:


if (directory.Attributes == FileAttributes.Directory)

{

}

else

{

     Console.WriteLine(directory.FullName);

}

Geschrieben

Unleserlich? :D Ich weiß in c# schreibt man das irgendwie in Klassen usw. auseinander scheinbar, aber wie Anfangs erwähnt komm ich eigentlich aus der php Ecke und die ist "lockerer" als c-sharp :floet:

Ja die einfache Attribut Variante habe ich schon von oben nach unten, links bis rechts durchprobiert und stelle nur fest das ich bei der Suche im Prinzip vor der foreach Schleife nichts prüfen kann, weil noch nicht vorhanden und danach kann ich mir es ersparen weil der Ordner schon erfasst wurde und die Exception wirft.

Ich komm mir gerade vor als müsste ich das Rätsel von Huhn und Ei lösen... :upps

Geschrieben

In die Zukunft sehen kann keine Programmier / Skiptsprache. Selbst PHP nicht.

Vor dir haben genug Leute ähnliche Probleme gehabt und haben diese auch gelöst. Warum solltest Du also das Rad neu erfinden müssen? Ich möchte mal behaupten, dass dein Entwurt einfach bescheiden ist.

Wenn man durch eine Collection iteriert, dann fragt man das gerade aktuelle Objekte ab und führe dann ggf. Operationen durch. Was man machen kann: Man holt sich nur valide Objekte in die Collection und arbeitet diese dann ab.

Hier muss aber auch eine Prüfung stattfinden, welche Ordner valide sind und welche nicht. Und dafür gibt es genug Lösungen.

Geschrieben

Nun das hier ist meine bereinigte Version. Stand aktuell ohne alles was es meines erachtens nicht mehr braucht. Was die Fehlermeldung allgemein betrifft da hast Du Recht das haben viele andere bereits gelöst, aber indem Sie einen Bogen drum herum gemacht haben.

Mein Ansatz heute war eigentlich die Rechte zu erlangen auch dort kopieren zu können, so das ich ein wirklich komplettes BackUp erstellen kann! Nun mal sehen vielleicht bekomme ich noch irgendwie meine System Rechte rein :)

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Security.AccessControl;

using System.Diagnostics;

using System.Threading;


namespace SaveMe

{

    class Program

    {

        private static string[] values;

        static void Main(string[] args)

        {

            // Angabe Ziel und Quellverzeichnis & Error Log

            string source = @GetApplicationsPath() + "config.txt";            

            string eLogD = @GetApplicationsPath() + "ErrorLog.txt";


            // Fehlerausgabe(n) und Erfolgsausgabe(n)

            string waitfile = ("Bitte warten... Die Sicherung der Verzeichnisse und Dateien von ");

            string waitfileb = (" nach ");

            string waitfilec = (" wird aktuell erstellt!");

            string cd = (DateTime.Now + " Die Configdatei (" + source + ") existiert nicht!\n");

            string dwng = (DateTime.Now + " Die Datei(en) oder das/die Verzeichnis(se) existiert nicht!\n");


            // Abfrage ob Configdatei existiert...

            if (File.Exists(source))

            {

                StreamReader sr = new StreamReader(source);               


                string inputLine = ("");


                int i = 0;


                while ((inputLine = sr.ReadLine()) != null)

                {

                    i++;                    

                    values = inputLine.Split(new Char[] { ';' });


                    for (int j = 0; j < values.Length; j++)

                    {

                        string ez = values[j];

                    }


                    string csvsource = values[0];

                    string csvtarget = values[1];


                    string dne = (DateTime.Now + " Das angegebene Verzeichnis (" + csvsource + ") existiert nicht!\n");

                    string zws = (DateTime.Now + " Es ist nicht genug Speicher vorhanden damit die Datei vollständig gelesen werden kann!\n");

                    string kzgb = (DateTime.Now + " Hinweis: Keine Zugriffsberechtigung! (" + csvsource + ") Entfernen Sie den Schreib- und/oder Leseschutz der zu überschreibenden Datei oder benennen Sie die Datei um!\n");

                    string sf = (DateTime.Now + " Ein nicht bedachter Fehler ist aufgetreten...!\n");

                    string up = (DateTime.Now + " Das Format des angegebenen Pfades ist Ungültig!\n");

                    string dpizl = (DateTime.Now + " Der eingetragene Pfad oder Dateiname ist zu lang.\nAuf Windows-Plattformen dürfen Pfade nicht länger als 247 Zeichen und Dateinamen nicht länger als 259 Zeichen sein.\n");

                    string au = (DateTime.Now + " Eines der Argumente ist ungültig!\n");

                    string ea = (DateTime.Now + " Ein E/A Fehler ist aufgetreten!\n");

                    string fidc = (DateTime.Now + " Die Configurationsdatei (" + source + ") darf keine leeren Zeilen enthalten! Initialisierung des BackUp's war daher leider nicht möglich oder nur teilweise erfolgreich\n");


                    if (File.Exists(csvsource) | Directory.Exists(csvsource))

                    {

                        try

                        {

                            // Suchen, Kombinieren und Überschreiben der Dateien mit den Pfaden 

                            foreach (string f in Directory.EnumerateFiles(csvsource, "*", SearchOption.AllDirectories))

                            {

                                string subPath = f.Substring(3);

                                string newpath = Path.Combine(csvtarget, subPath);

                                string test = Path.GetDirectoryName(newpath);

                                if (!Directory.Exists(test))

                                {

                                    Directory.CreateDirectory(test);

                                }

                                File.Copy(f, newpath, true);

                                File.SetAttributes(newpath, FileAttributes.Normal);

                                // Bitte Warten Ausgabe

                                Console.WriteLine(waitfile + f + waitfileb + newpath + waitfilec);

                            }

                        }

                        catch (OutOfMemoryException oome)

                        {

                            File.AppendAllText(eLogD, zws + oome + "\n");

                        }

                        catch (UnauthorizedAccessException uac)

                        {

                            File.AppendAllText(eLogD, kzgb + uac + "\n");

                        }

                        catch (NotSupportedException nse)

                        {

                            File.AppendAllText(eLogD, up + nse + "\n");

                        }

                        catch (PathTooLongException ptle)

                        {

                            File.AppendAllText(eLogD, dpizl + ptle + "\n");

                        }

                        catch (DirectoryNotFoundException dnfe)

                        {

                            File.AppendAllText(eLogD, dne + dnfe + "\n");

                        }

                        catch (ArgumentException ae)

                        {

                            File.AppendAllText(eLogD, au + ae + "\n");

                        }

                        catch (IOException ioe)

                        {

                            File.AppendAllText(eLogD, ea + ioe + "\n");

                        }

                        catch (IndexOutOfRangeException ioore)

                        {

                            File.AppendAllText(eLogD, fidc + ioore + "\n");

                        }

                        catch (Exception e)

                        {

                            File.AppendAllText(eLogD, sf + e + "\n");

                        }

                    }

                    else

                    {

                        File.AppendAllText(eLogD, dwng + "\n");

                        Console.WriteLine(dwng);

                    }

                } // Ende While - Orientierungspunkt

            }

            else

            {

                File.AppendAllText(eLogD, cd + "\n");

                Console.WriteLine(cd);

            }

        }


        public static string GetApplicationsPath()

        {

            return Thread.GetDomain().BaseDirectory;

        }

    }

}

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...