Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)qqpublished in(发表于) 2014/7/11 9:22:30 C#教程:DnsPermission类使用实例
C#教程:DnsPermission类使用实例|方法
DnsPermission类该类控制对网络上域名系统(DNS)服务器的访问权限,默认权限允许所有的本地和网络应用程序访问DNS服务,网络应用程序没有DNS权限。DnsPermission类常用方法及说明如表1所示。表1 DnsPermission类常用方法下面对比较重要的方法进行详细介绍。(1)Copy方法。用于创建当前权限实例的相同副本。语法:public override IPermission Copy ()返回值:DnsPermission类的新实例,是当前实例的相同副本。(2)ToXml方法。用于创建DnsPermission实例及其当前状态的XML编码。语法:public override SecurityElement ToXml ()返回值:SecurityElement实例,包含安全对象的XML编码表示形式,包括状态信息。(3)Intersect方法。用于创建一个当前权限实例与指定权限实例的交集的权限实例。public override IPermission Intersect(IPermission target)参数说明如下。target:要与当前实例求交集的DnsPermission实例。返回值:一个DnsPermission实例,表示当前DnsPermission实例与指定DnsPermission实例的交集;如果交集为空,则为空引用(在Visual Basic中为Nothing)。如果当前实例和target都是不受限制的,则该方法将返回一个不受限制的、新的DnsPermission实例;否则返回空引用。示例DnsPermission类的方法应用举例本示例实现的是设置与获取本机的DNS信息,获得当前权限实例是否是指定权限实例的子集,示例运行结果如图1和图2所示。图1 DnsPermission主窗体图2 提示窗体单击【交集权限】按钮,用于判断当前权限实例与指定权限实例是否存在交集。【交集权限】按钮的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);elseMessageBox.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);}}完整程序代码如下:★ ★★★★FrmDns.cs窗体代码文件完整程序代码★★★★★using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Net;using System.Collections;using System.Security.Permissions;namespace _6_01{public partial class FrmDNS : Form{DnsPermission myPermission;public FrmDNS(){InitializeComponent();}private void button6_Click(object sender, EventArgs e){this.listBox1.Items.Clear();this.listBox2.Items.Clear();}private void button7_Click(object sender, EventArgs e){
赞