首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# DnsPermission 類別介紹與範例應用

     編輯:關於C#

類別用途

System.Net.DnsPermission 控制程式碼存取 DNS 服務的權限。預設本地應用程式擁有完整 DNS 存取權,網路應用程式則受限。

常用方法表

方法說明
Copy()建立目前權限實體的複本
FromXml()從 XML 編碼重建權限實體
Intersect()回傳目前權限與指定權限的交集
IsSubsetOf()判斷目前權限是否為指定權限的子集
IsUnrestricted()檢查是否為無限制權限
ToXml()產生權限實體的 XML 編碼
Union()回傳目前權限與指定權限的聯集

重要方法詳細說明

Copy()

public override IPermission Copy()

回傳新的 DnsPermission 實體,為目前實體的完全複本。

ToXml()

public override SecurityElement ToXml()

回傳包含權限狀態資訊的 SecurityElement(XML 表示)。

Intersect()

public override IPermission Intersect(IPermission target)

參數 target 為另一 DnsPermission 實體。回傳交集權限;若交集為空則回傳 null。若兩者皆為無限制,回傳新的無限制實體。

範例應用:取得與設定本機 DNS 資訊

介面包含按鈕:【原 DNS 設定】顯示目前 DNS 權限 XML 屬性;【交集權限】測試與無權限實體的交集。

private DnsPermission myPermission = new DnsPermission(PermissionState.Unrestricted);

private void btnShowOriginal_Click(object sender, EventArgs e) {
    myPermission.Demand(); // 強制要求權限
    PrintKeysAndValues(myPermission.ToXml().Attributes);
}

private void btnIntersect_Click(object sender, EventArgs e) {
    try {
        btnShowOriginal.PerformClick();
        DnsPermission copy = (DnsPermission)myPermission.Copy();
        DnsPermission none = new DnsPermission(PermissionState.None);
        none.Demand();
        DnsPermission intersect = (DnsPermission)copy.Intersect(none);
        if (intersect != null)
            PrintKeysAndValues(intersect.ToXml().Attributes);
        else
            MessageBox.Show("交集不存在");
    } catch (Exception ex) { MessageBox.Show(ex.Message); }
}

private void PrintKeysAndValues(Hashtable attrs) {
    IDictionaryEnumerator en = attrs.GetEnumerator();
    while (en.MoveNext()) {
        listBox1.Items.Add(en.Key);
        listBox2.Items.Add(en.Value);
    }
}

安全性注意

  • 呼叫 Demand() 會檢查呼叫堆疊上所有呼叫者是否具備該權限,不足則拋出 SecurityException。
  • 在完全信任環境(本地執行)通常不會受限;在沙箱或 ClickOnce 部署中需正確設定權限。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved