本示例實現的是設置與獲取本機的DNS信息,獲得當前權限實例是否是指定權限實例的子集。
單擊【交集權限】按鈕,用於判斷當前權限實例與指定權限實例是否存在交集。【交集權限】按鈕的Click事件代碼如下:
private void button8_Click(object sender, EventArgs e)
{
try
{
this.button6.PerformClick();
DnsPermission myPermissionCopy = (DnsPermission)myPermission.Copy();
DnsPermission dsNew = new DnsPermission(PermissionState.None);
dsNew.Demand();
DnsPermission permission =
(DnsPermission)myPermissionCopy.Intersect(dsNew);
if (permission != null)
PrintKeysAndValues(permission.ToXML().Attributes);
else
MessageBox.Show("當前權限實例與指定權限實例的交集的權限不存在");
}
catch (Exception ey) { MessageBox.Show(ey.Message); }
}
單擊【原DNS設置】按鈕,調用UseDns與PrintKeysAndValues顯示DNS信息列表。【原DNS設置】按鈕的Click事件代碼如下:
private void button7_Click(object sender, EventArgs e)
{
UseDns();
}
UseDns方法用於創建DnsPermission實例及其當前狀態的XML編碼,其實現代碼如下:
public void UseDns()
{
this.button6.PerformClick();
myPermission.Demand();
PrintKeysAndValues(myPermission.ToXML().Attributes);
}
PrintKeysAndValues方法以“名稱/值”對形式顯示XML元素屬性,其實現代碼如下:
private void PrintKeysAndValues(Hashtable myHashtable)
{
IDictionaryEnumerator myEnumerator = myHashtable.GetEnumerator();
while (myEnumerator.MoveNext())
{
this.listBox1.Items.Add(myEnumerator.Key);
this.listBox2.Items.Add( myEnumerator.Value);
}
}