Korzystanie .NET można pomyśleć, że określenia, które uprawnienia są przypisany do katalogu/pliku powinno być dość łatwe, ponieważ istnieje FileSystemRights Enum Zdefiniowano, że wydaje się zawierać wszystkie możliwe uprawnienia, które plik/katalog może mieć i wywoływanie: AccessRule.FileSystemRights zwraca kombinację tych wartości. Wkrótce jednak natkniesz się na pewne uprawnienia, których wartość w ta właściwość nie pasuje do żadnej z wartości w Enum FileSystemRights (szkoda, że nie nazwałaby niektórych nieruchomości o tej samej nazwie jako typ, ale hej).
Rezultatem jest to, że w przypadku niektórych plików/katalogów po prostu nie można ustalić, które uprawnienia są do nich przypisane. Jeśli wykonasz AccessRule.FileSystemRights.ToString, wówczas dla tych wartości widzisz tylko numer, a nie opis (np. Modyfikuj, Usuń, FullControl itd.). Wspólne numery można zobaczyć są:
-1610612736, -536.805.376 i 268435456
Aby zorientować, co właściwie są te uprawnienia, trzeba spojrzeć na które ustawione są bity, gdy traktują tę liczbę jako 32 oddzielny bity niż jako liczba całkowita (jako liczby całkowite są 32 bitów), i porównać je z tym schemacie: http://msdn.microsoft.com/en-us/library/aa374896(v=vs.85).aspx
tak na przykład -1610612736 ma pierwszy bit i trzeciego zestawu bitów, co oznacza, że to GENERIC_READ w połączeniu z GENERIC_EXECUTE. Teraz możesz konwertować te ogólne uprawnienia na określone uprawnienia systemowe, które odpowiadają.
Możesz zobaczyć, które uprawnienia są dostępne dla każdej mapy uprawnień ogólnych: http://msdn.microsoft.com/en-us/library/aa364399.aspx. Po prostu pamiętaj o tym, że STANDARD_RIGHTS_READ, STANDARD_RIGHTS_EXECUTE i STANDARD_RIGHTS_WRITE to wszystko to samo (nie mam pojęcia dlaczego, wydaje mi się dziwne dla mnie ) i faktycznie wszystkie są równe FileSystemRights.Wartość ReadPermissions.