The code example for FileSystemAuditRule doesn't work
File class has no File.GetAccessControl or File.SetAccessControl methods.
Found a workaround by using the FileInfo class as it has those functions, however none of the functions for removing rules work (RemoveAuditRuleAll, RemoveAuditRule, RemoveAuditRuleSpecific), only PurgeAuditRules works which removes all audit rules.
public static void AddFileAuditRule(string FileName, FileSystemRights Rights, AuditFlags AuditRule)
{
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
FileInfo info = new FileInfo(FileName);
FileSecurity fSecurity = info.GetAccessControl();
fSecurity.SetAccessRuleProtection(false, false);
fSecurity.AddAuditRule(new FileSystemAuditRule(userName, Rights, AuditRule));
info.SetAccessControl(fSecurity);
}
public static void RemoveFileAuditRule(string FileName, FileSystemRights Rights, AuditFlags AuditRule)
{
string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
FileInfo info = new FileInfo(FileName);
FileSecurity fSecurity = info.GetAccessControl();
//fSecurity.RemoveAuditRule(new FileSystemAuditRule(userName, Rights, AuditRule));
fSecurity.PurgeAuditRules(System.Security.Principal.WindowsIdentity.GetCurrent().User);
info.SetAccessControl(fSecurity);
}