コード例 #1
0
ファイル: Mirror.cs プロジェクト: haides/CmisDrive
        public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
        {
            var         cmisPath   = fileName.Replace("\\", "/");
            ICmisObject cmisObject = (IDocument)cmisSession.GetObjectByPath(cmisPath);

            try
            {
                // TODO
                //security = info.IsDirectory
                //               ? (FileSystemSecurity)Directory.GetAccessControl("TODO GetPath(fileName)")
                //               : File.GetAccessControl("TODO GetPath(fileName)");
                if (cmisObject is IFolder)
                {
                    //security = new System.Security.AccessControl.DirectorySecurity();
                    //security.AccessRightType = new AccessRig
                    security = Directory.GetAccessControl(Constants.TEMPLATE_FOLDER); // TODO create from scratch rather than using a template
                }
                else
                {
                    security = File.GetAccessControl(Constants.TEMPLATE_FILE); // TODO create from scratch rather than using a template
                }

                return(Trace("GetFileSecurity", fileName, info, DokanResult.Success, sections.ToString()));
            }
            catch (UnauthorizedAccessException)
            {
                security = null;
                return(Trace("GetFileSecurity", fileName, info, DokanResult.AccessDenied, sections.ToString()));
            }
        }
コード例 #2
0
ファイル: Mirror.cs プロジェクト: mthompson2/dokan-dotnet
 public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     try
     {
         security = info.IsDirectory
                        ? (FileSystemSecurity)Directory.GetAccessControl(GetPath(fileName))
                        : File.GetAccessControl(GetPath(fileName));
         return(Trace("GetFileSecurity", fileName, info, DokanResult.Success, sections.ToString()));
     }
     catch (UnauthorizedAccessException)
     {
         security = null;
         return(Trace("GetFileSecurity", fileName, info, DokanResult.AccessDenied, sections.ToString()));
     }
 }
コード例 #3
0
ファイル: Mirror.cs プロジェクト: mthompson2/dokan-dotnet
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     try
     {
         if (info.IsDirectory)
         {
             Directory.SetAccessControl(GetPath(fileName), (DirectorySecurity)security);
         }
         else
         {
             File.SetAccessControl(GetPath(fileName), (FileSecurity)security);
         }
         return(Trace("SetFileSecurity", fileName, info, DokanResult.Success, sections.ToString()));
     }
     catch (UnauthorizedAccessException)
     {
         return(Trace("SetFileSecurity", fileName, info, DokanResult.AccessDenied, sections.ToString()));
     }
 }
コード例 #4
0
ファイル: Mirror.cs プロジェクト: shlatchz/dokan-dotnet
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     try
     {
         if (info.IsDirectory)
         {
             Directory.SetAccessControl(GetPath(fileName), (DirectorySecurity)security);
         }
         else
         {
             File.SetAccessControl(GetPath(fileName), (FileSecurity)security);
         }
         return Trace("SetFileSecurity", fileName, info, DokanResult.Success, sections.ToString());
     }
     catch (UnauthorizedAccessException)
     {
         return Trace("SetFileSecurity", fileName, info, DokanResult.AccessDenied, sections.ToString());
     }
 }
コード例 #5
0
ファイル: Mirror.cs プロジェクト: shlatchz/dokan-dotnet
 public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     try
     {
         security = info.IsDirectory
                        ? (FileSystemSecurity)Directory.GetAccessControl(GetPath(fileName))
                        : File.GetAccessControl(GetPath(fileName));
         return Trace("GetFileSecurity", fileName, info, DokanResult.Success, sections.ToString());
     }
     catch (UnauthorizedAccessException)
     {
         security = null;
         return Trace("GetFileSecurity", fileName, info, DokanResult.AccessDenied, sections.ToString());
     }
 }
コード例 #6
0
ファイル: Mirror.cs プロジェクト: Numaoh/dokan-dotnet
        public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections,
                                        DokanFileInfo info)
        {
#if !NETCOREAPP1_0
            try
            {
                if (info.IsDirectory)
                {
                    Directory.SetAccessControl(GetPath(fileName), (DirectorySecurity)security);
                }
                else
                {
                    File.SetAccessControl(GetPath(fileName), (FileSecurity)security);
                }
                return(Trace(nameof(SetFileSecurity), fileName, info, DokanResult.Success, sections.ToString()));
            }
            catch (UnauthorizedAccessException)
            {
                return(Trace(nameof(SetFileSecurity), fileName, info, DokanResult.AccessDenied, sections.ToString()));
            }
#else
// .NET Core 1.0 do not have support for Directory.SetAccessControl
            return(NtStatus.NotImplemented);
#endif
        }
コード例 #7
0
ファイル: Mirror.cs プロジェクト: Numaoh/dokan-dotnet
        public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections,
                                        DokanFileInfo info)
        {
#if !NETCOREAPP1_0
            try
            {
                security = info.IsDirectory
                    ? (FileSystemSecurity)Directory.GetAccessControl(GetPath(fileName))
                    : File.GetAccessControl(GetPath(fileName));
                return(Trace(nameof(GetFileSecurity), fileName, info, DokanResult.Success, sections.ToString()));
            }
            catch (UnauthorizedAccessException)
            {
                security = null;
                return(Trace(nameof(GetFileSecurity), fileName, info, DokanResult.AccessDenied, sections.ToString()));
            }
#else
// .NET Core 1.0 do not have support for Directory.GetAccessControl
            security = null;
            return(NtStatus.NotImplemented);
#endif
        }
コード例 #8
0
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 => AsDebug(nameof(SetFileAttributes), fileName, info, DokanResult.NotImplemented, sections.ToString());
コード例 #9
0
 public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections,
                                 DokanFileInfo info)
 {
     try
     {
         //get user
         SecurityIdentifier identity = WindowsIdentity.GetCurrent().Owner;
         //check if file is directory or not and set appropriate security method
         security = !info.IsDirectory ? (FileSystemSecurity) new FileSecurity() : new DirectorySecurity();
         //add access rule for full control (maybe make read only in future)
         security.SetAccessRule(new FileSystemAccessRule(identity, FileSystemRights.FullControl, AccessControlType.Allow));
         //disable protection and preserve inheritance
         security.SetAccessRuleProtection(false, true);
         //done
         return(Trace(nameof(GetFileSecurity), fileName, info, DokanResult.Success, sections.ToString()));
     }
     catch (UnauthorizedAccessException)
     {
         security = null;
         return(Trace(nameof(GetFileSecurity), fileName, info, DokanResult.AccessDenied, sections.ToString()));
     }
 }
コード例 #10
0
ファイル: Mirror.cs プロジェクト: rohit-joy/dokan-dotnet-core
        public NtStatus GetFileSecurity(string fileName, out FileSystemSecurity security, AccessControlSections sections,
            DokanFileInfo info)
        {
            try
            {
                security = new FileSecurity();
                return Trace(nameof(GetFileSecurity), fileName, info, DokanResult.Success, sections.ToString());

                //security = null;
                //return NtStatus.NotImplemented;
            }
            catch (UnauthorizedAccessException)
            {
                security = null;
                return Trace(nameof(GetFileSecurity), fileName, info, DokanResult.AccessDenied, sections.ToString());
            }
        }
コード例 #11
0
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, IDokanFileInfo info)
 {
     return(Trace("SetFileSecurity", fileName, info, DokanResult.NotImplemented, sections.ToString()));
 }
コード例 #12
0
ファイル: Class22.cs プロジェクト: nobodyMi/WiiU_USB_Helper
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     try
     {
         if (info.IsDirectory)
         {
             Directory.SetAccessControl(this.method_6(fileName), (DirectorySecurity)security);
         }
         else
         {
             File.SetAccessControl(this.method_6(fileName), (FileSecurity)security);
         }
         return(this.method_8(nameof(SetFileSecurity), fileName, info, NtStatus.Success, (object)sections.ToString()));
     }
     catch (UnauthorizedAccessException ex)
     {
         return(this.method_8(nameof(SetFileSecurity), fileName, info, NtStatus.AccessDenied, (object)sections.ToString()));
     }
 }
コード例 #13
0
 public NtStatus SetFileSecurity(string fileName, FileSystemSecurity security, AccessControlSections sections, DokanFileInfo info)
 {
     return Trace(nameof(SetFileAttributes), fileName, info, DokanResult.NotImplemented, sections.ToString());
 }