我忙於嘗試理解c#中的安全性內容,並且很努力地看到Assert如何工作。我正在使用.net 3.5。在C中斷言權限#
我做了一個示例應用程序,試圖找出這一點。
調用方法:
[FileIOPermission(SecurityAction.Deny, ViewAndModify = @"C:\")]
static void Main(string[] args)
{
WriteTest testWriter = new WriteTest();
testWriter.Test();
Console.Read();
}
在一個單獨的類庫我有:
public class WriteTest
{
public void Test()
{
try
{
FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, @"C:\");
permission.Assert();
using (StreamWriter sw = new StreamWriter(@"C:\test.txt"))
{
sw.WriteLine("testing!");
sw.Flush();
}
Console.WriteLine("Writen to file!");
}
catch (SecurityException sec)
{
Console.WriteLine("No privileges!");
}
}
}
此代碼執行罰款和所有。它會寫入文件。我的問題是這個工作到底如何?這是否不會使安全類無效,如果我可以斷言我想要的權限,以便它跳過檢查?如果我將Assert更改爲Demand,則會引發異常。
安全類的重點是不允許我設置權限,以便當我打電話給第三方課時,我可以防止它流氓並做我不想做的事情?我知道如果我在AppDomain中加載DLL,即使第三方DLL使用Assert,我也會得到這種效果,但如果我直接調用它,這似乎很奇怪。我試過閱讀關於Assert的MSDN文檔,但我發現很難理解。
請確保您需要了解.NET 4以前的安全模型...自.NET 4.0代碼訪問安全性已被簡化。 – 2012-02-05 12:26:17