Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published 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);

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);

}

}

完整程序代码如下:

★ ★★★★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)

{


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759