Hallo
Da ich immer wieder Probleme mit den Berechtigungen im FileSystem habe, dachte ich mir ich sollte Abfragen ob der aktuelle User auch Schreibberechtigung für die Datei hat.
Als Testfile habe ich mir ein File mit folgenden Berechtigungen hergerichtet (siehe auch PrintScreen "test-txt-File.JPG"):
Jeder: Lesen, Ausführen und Lesen
System und Administrator: hat Vollzugriff
Zusatzinfo: ich bin ein ganz normaler Domainuser kein Admin.
Wenn ich jetzt die Berechtigungen abfrage, listet er mir alle drei Berechtigungsgruppen (System, Jeder, Administratoren) auf und nicht nur in der Gruppe in der ich angesiedelt bin und zusätzlich.
Wenn ich die "FileSystemRights" abfrage, so springt er mir z.B. bei "FileSystemRights.Read" nicht hinein habe aber als Gruppenmitglied "Jeder" diese Berechtigung.
Bin ich hier irgendwie auf dem Holzweg?
gruss
pascal
Da ich immer wieder Probleme mit den Berechtigungen im FileSystem habe, dachte ich mir ich sollte Abfragen ob der aktuelle User auch Schreibberechtigung für die Datei hat.
Als Testfile habe ich mir ein File mit folgenden Berechtigungen hergerichtet (siehe auch PrintScreen "test-txt-File.JPG"):
Jeder: Lesen, Ausführen und Lesen
System und Administrator: hat Vollzugriff
Zusatzinfo: ich bin ein ganz normaler Domainuser kein Admin.
Wenn ich jetzt die Berechtigungen abfrage, listet er mir alle drei Berechtigungsgruppen (System, Jeder, Administratoren) auf und nicht nur in der Gruppe in der ich angesiedelt bin und zusätzlich.
Wenn ich die "FileSystemRights" abfrage, so springt er mir z.B. bei "FileSystemRights.Read" nicht hinein habe aber als Gruppenmitglied "Jeder" diese Berechtigung.
Bin ich hier irgendwie auf dem Holzweg?
gruss
pascal
Code:
Dim UserSID As String = System.Security.Principal.WindowsIdentity.GetCurrent.User.AccountDomainSid.ToString() Dim fs As FileSecurity = File.GetAccessControl("Z:\Temp\test.txt") Dim AuRuCol As AuthorizationRuleCollection AuRuCol = fs.GetAccessRules(True, True, System.Security.Principal.WindowsIdentity.GetCurrent.User.AccountDomainSid.GetType) For Each fsar As FileSystemAccessRule In AuRuCol Console.WriteLine(fsar.FileSystemRights.ToString) If System.Security.AccessControl.AccessControlType.Allow.Equals(fsar.AccessControlType) Then If FileSystemRights.ExecuteFile And fsar.FileSystemRights = FileSystemRights.Write Then Console.WriteLine("test 1") End If End If If fsar.FileSystemRights = FileSystemRights.Read Then Console.WriteLine("test 2") End If If FileSystemRights.Write Or fsar.FileSystemRights = FileSystemRights.Write Then Console.WriteLine("test 3") End If Next
Comment