代码之家  ›  专栏  ›  技术社区  ›  Woot4Moo

通过C修改对象访问属性#

  •  4
  • Woot4Moo  · 技术社区  · 15 年前

    读取控制
    使同步
    ReadData(或ListDirectory)
    WriteData(或AddFile)
    AppendData(或AddSubDirectory或CreatePipeInstance)

    编辑

    protected FileSystemRights[] AppendFileSystemRights()  
            {  
                return new FileSystemRights[]   
                  {  
                      FileSystemRights.ReadAndExecute,
                      FileSystemRights.WriteAttributes,
                      FileSystemRights.Synchronize,  
                      FileSystemRights.ReadAttributes,
                      FileSystemRights.ReadData  
                  };  
              }
    
    public void ApplySystemRight(string fileName, FileSystemRights[] rights)  
            {  
                if (string.IsNullOrEmpty(fileName))  
                {  
                    return;  
                }  
    
                if (rights == null || rights.Length <= 0)
                {
                    return;
                }
    
                try
                {
                    Console.WriteLine("ATTEMPTING TO OPEN THE FOLLOWING FILE: {0}", fileName);
                    fileSec = File.GetAccessControl(fileName);
    
                    for (int i = 0; i < rights.Length; i++)
                    {
                        Console.WriteLine("ATTEMPTING TO ADD THE FOLLOWING ACCESS RULE: {0} TO {1}", rights[i], fileName);
                        fileSec.AddAccessRule(new FileSystemAccessRule(user,
                            rights[i], AccessControlType.Allow));
                    }
    
                    Console.WriteLine("ATTEMPTING TO SET THE PRECEDING ACCESS RULES: TO {0}", fileName);
                    File.SetAccessControl(fileName, fileSec);
                }
                catch (UnauthorizedAccessException uae)
                {
                    Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0}  \n WHILE PROCESSING: {1}", uae.Message, fileName);
                }
                catch (ArgumentNullException ane)
                {
                    Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0}  \n WHILE PROCESSING: {1}", ane.Message, fileName);
                }
                catch (ArgumentException ae)
                {
                    Console.WriteLine("CAUGHT THE FOLLOWING EXCEPTION: {0}  \n WHILE PROCESSING: {1}", ae.Message, fileName);
                }
    
            }
    
    3 回复  |  直到 12 年前
        1
  •  2
  •   Mike    15 年前
        2
  •  1
  •   Hans Passant    15 年前

    这将在尝试访问操作系统资源的应用程序中产生运行时错误。Windows错误5,错误访问被拒绝。如果在应用程序的日志文件、应用程序事件日志中的事件或明确的托管异常中没有得到任何诊断,那么您将大海捞针。

        3
  •  1
  •   Ronald Wildenberg    15 年前

    你可以使用 FileSecurity 类以编程方式修改访问控制属性。但当然,您首先必须找出这些属性应该修改的文件或目录。