[VB 2005] Datei-Zugriffsrechte

Hallo,

ich habe folgendes problem........
Mit dem folgedem Code wird ein Textdatei erstellt und in diese wird eine Auflistung aller Dateien in diesem Ordner geschrieben.

Code:
            Using sw As IO.StreamWriter = New IO.StreamWriter("C:\Temp\FileSearch_Bericht.txt", False)
                sw.WriteLine("----------------------------------------------")
                sw.Write("The date of creation is: ")
                sw.WriteLine(Date.Now)
                sw.WriteLine("----------------------------------------------")
                sw.WriteLine(" ")

                For Each foundFile As String In My.Computer.FileSystem.GetFiles("C:\temp", FileIO.SearchOption.SearchAllSubDirectories, Ext)
                    sw.WriteLine(foundFile)
                Next

                sw.Close()
            End Using

Mein Problem an dieser geschichte ist aber das wenn ich:
Code:
For Each foundFile As String In My.Computer.FileSystem.GetFiles("C:\temp", FileIO.SearchOption.SearchAllSubDirectories, Ext)
auf das ändere:
Code:
For Each foundFile As String In My.Computer.FileSystem.GetFiles("C:\", FileIO.SearchOption.SearchAllSubDirectories, Ext)
bekomme ich einen schönen Fehler:

UnauthorizedAccessException

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

ich habe leider keinen Plan Warum es zu diesen Fehler kommt. Kann mir einer dabei Helfen?
 
Hi,

Als normaler User hast du keinen Zugriff auf das Verzeichnis "System Volume Information". Auf dieses Verzeichnis hat nur das OS und die unter deren Rechten laufenden Dienste Zugriff.

Das kannst du aber auch ganz leicht selbst raus finden. Versuch doch mal das Verzeichnis im Explorer zu öffnen ;)
 
Hi,

erst eimal danke für die Antwort...
ich möchte ja eigentlich nur das er mir als Ausgangspunkt der DateiSuche nicht den Ordner "Temp" sondern Laufwerk "C:", mit seinen Unterordnern, oder jedes andere Laufwerk nutzt.

mfg Marc
 
Dann solltest du rekursiv über alle Verzeichnisse laufen. Wenn ein Verzeichnis ein Unterverzeichnis hat, dann geh da rein.
Triffst du auf ein Exception, wie UnauthorizedAccess, dann machst du mit dem nächsten Verzeichnis weiter.
 
Ist zwar in C# solltest aber damit klar kommen. Diese Funktion muss nur rekursiv aufgerufen werden.
Das ExceptionHandling musst du noch hinzufügen.
C#:
private void AddDirs(string[] dirs)
{
	foreach (string dir in dirs)
	{
		TreeNode node = new TreeNode(dir);
		treeView.Nodes.Add(node);

		string[] subDirs= System.IO.Directory.GetDirectories(dir);
		foreach(string subDir in subDirs)
		{
			string directoryName = new System.IO.DirectoryInfo(subDir).Name;
			TreeNode subNode = new TreeNode(directoryName);
			node.Nodes.Add(subNode);
		}
	}
}
 

Neue Beiträge

Zurück