コード例 #1
0
ファイル: FileTest.cs プロジェクト: Sicos1977/AlphaFS
      public void AlphaFS___CreateWithFileSecurity()
      {
         Console.WriteLine("File.Create()");

         string pathExpected = Path.GetTempPath("AlphaFS CreateWithFileSecurityExpected");
         string pathActual = Path.GetTempPath("AlphaFS CreateWithFileSecurityActual");

         File.Delete(pathExpected);
         File.Delete(pathActual);

         FileSecurity expectedFileSecurity = new FileSecurity();
         expectedFileSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, AccessControlType.Allow));
         expectedFileSecurity.AddAuditRule(new FileSystemAuditRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.Read, AuditFlags.Success));

         using (new Alphaleonis.Win32.Security.PrivilegeEnabler(Alphaleonis.Win32.Security.Privilege.Security))
         {
            using (FileStream s1 = System.IO.File.Create(pathExpected, 4096, FileOptions.None, expectedFileSecurity))
            using (FileStream s2 = File.Create(pathActual, 4096, FileOptions.None, expectedFileSecurity))
            {
            }
         }

         string expectedFileSecuritySddl = System.IO.File.GetAccessControl(pathExpected).GetSecurityDescriptorSddlForm(AccessControlSections.All);
         string actualFileSecuritySddl = System.IO.File.GetAccessControl(pathActual).GetSecurityDescriptorSddlForm(AccessControlSections.All);

         Assert.AreEqual(expectedFileSecuritySddl, actualFileSecuritySddl);

         File.Delete(pathExpected, true);
         File.Delete(pathActual, true);
      }