如果你對Windows存取控制不瞭解的話,建議先看這篇文章:
淺談Windows存取控制在.NET(C#)中的實現(ACE, SD, DACL, SACL)
我們知道在系統存取控制清單(SACL)中,ACE是審核規則,.NET中System.Security.AccessControl命名空間內封裝了審核規則(Audit Rule)的相互關聯類型。最常見的審核規則應用對象是檔案或者註冊表鍵。
比如下面用.NET建立一個檔案,然後加入一個審核規則,該審核規則指定每當檔案被成功修改後,相應訊息會寫入Windows的安全事件目錄。
代碼:
//+ using System.Security.AccessControl;
//+ using System.Security.Principal;
//+ using System.IO;
try
{
//建立審核項目
var ace = new FileSystemAuditRule(WindowsIdentity.GetCurrent().User,
FileSystemRights.Modify,
AuditFlags.Success);
//建立存取控制清單
var sacl = new FileSecurity();
//添加審核項目
sacl.AddAuditRule(ace);
//建立檔案
File.WriteAllText("test.txt", "Mgen");
//寫入審核資訊
File.SetAccessControl("test.txt", sacl);
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey(true);
}
運行後,但使用者修改了程式目錄下的test.txt文字檔後。Windows的安全事件目錄中便會產生新的訊息:
當然,檔案的具體審核資訊可以通過“檔案屬性”-“安全”-“進階”-“審核”來查看(或者修改):