第一篇:(FINISHED)(COPIED)创建一个私有命名空间[定稿]
以下列出创建一个私有命名空间的步骤以及函数知识点
源码:
int WINAPI WinMain(…){
//创建一个边界描述符
Char szBoundaryText[] = “Boundary”;
HANDLE hBoundary = CreateBoundaryDescriptor(szBoundaryText,0);
//创建一个SID
BYTE localAdminSID[SECURITY_MAX_SID_SIZE];
PSID plocalAdminSID = &localAdminSID;
DWORD cbSID = sizeof(localAdminSID);
CreateWellKnownSid(WinBuiltinAdministratorsSid,NULL,plocalAdminSID,&cbSID);
//将SID和边界描述符关联起来
AddSIDToBoundaryDescriptor(&hBoundary,plocalAdminSID);
//初始化安全描述符
SECURITY_ATTRIBUTES sa;
sa.bInheritHandle = FALSE;
sa.nLength = sizeof(sa);
ConvertStringSecurityDescriptorToSecurityDescriptor(TEXT(“D(A;;GA;;;BA)”), SDDL_REVISION_1,&sa.lpSecurityDescriptor,NULL);
//创建私人命名空间,第三个参数就是以后用的前缀
HANDLE hNamespace = CreatePrivateNamespace(&sa.hBoundary,szBoundaryText);
//释放安全描述符
LocalFree(sa.lpSecurityDescriptor);
//尝试在私人命名空间中创建一个Mutex Object,并检测是否为首例程
HANDLE hMutex = CreateMutex(NULL,FALSE,TEXT(“BoundaryMutex”));
If(GetLastError()==ERROR_ALREADY_EXISTS)Printf(“Another Instance is running n”);
else printf(“First Instance”);}
下面介绍函数
CreateBoundaryDescriptor HANDLE WINAPI CreateBoundaryDescriptor(_In_ LPCTSTR Name,_In_ ULONG Flags);Parameters Name [in]
边界描述符的名字 Flags [in]
保留,设为NULL Return value
如果函数成功了,返回值就是一个到边界描述符的句柄
如果函数失败了,那么返回值就是NULL。可以调用GetLastError来获得更多的错误信息.Remarks
一个新的边界描述符必须有至少一个的SID。
CreateWellKnownSid BOOL WINAPI CreateWellKnownSid(_In_
WELL_KNOWN_SID_TYPE WellKnownSidType,_In_opt_
PSID DomainSid,_Out_opt_ PSID pSid,_Inout_
DWORD *cbSid);Parameters WellKnownSidType [in]
WELL_KNOWN_SID_TYPE枚举型结构的成员,specifies what the SID will identify DomainSid [in, optional]
一个指向SID的指针that identifies the domain to use when creating the SID.若为NULL,则使用本地计算机 pSid [out, optional]
一个指向内存的指针,用来存储新的SID cbSid [in, out]
一个双字指针描述了pSid中的可用字节数.Return value
如果函数成功了,返回值为非零
如果函数失败了,那么返回值为0.要得到更多的错误信息,调用GetLastError函数
AddSIDToBoundaryDescriptor BOOL WINAPI AddSIDToBoundaryDescriptor(_Inout_ HANDLE *BoundaryDescriptor,_In_
PSID RequiredSid);Parameters BoundaryDescriptor [in, out] 一个指向边界描述符的句柄 RequiredSid [in] 一个指向SID结构的指针
Return value 如果函数成功了,返回值非零
如果函数失败了,那么返回值为0.得到更多错误信息,调用GetLastError函数
ConvertStringSecurityDescriptorToSecurityDescriptor
BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptor(_In_
LPCTSTR StringSecurityDescriptor,_In_
DWORD StringSDRevision,_Out_ PSECURITY_DESCRIPTOR *SecurityDescriptor,_Out_ PULONG SecurityDescriptorSize);Parameters StringSecurityDescriptor [in] 一个指向包含字符串形式的安全描述符的指针
StringSDRevision [in] 目前此值只能被设定为SDDL_REVISION_1 SecurityDescriptor [out]
一个指向变量的指针,用来接收安全描述符。
SecurityDescriptorSize [out]
一个指向变量的指针,用来接收安全描述符的大小(以字节数表示)。此值可以设为NULL,表示不需要这个值 Return value 如果函数成功,返回值为非零
如果函数失败,那么返回值为0.要得到更多信息,调用GetLastError函数,返回值可能如下:
ERROR_INVALID_PARAMETER
有一个参数是无效的
ERROR_UNKNOWN_REVISION
SDDL revision level 是无效的
ERROR_NONE_MAPPED
输入的安全描述符字符串中的SID不能被找到
CreatePrivateNamespace HANDLE WINAPI CreatePrivateNamespace(_In_opt_ LPSECURITY_ATTRIBUTES lpPrivateNamespaceAttributes,_In_
LPVOID lpBoundaryDescriptor,_In_
LPCTSTR lpAliasPrefix);Parameters lpPrivateNamespaceAttributes [in, optional]
一个指向SECURITY_ATTRIBUTES结构的指针,描述了”命名空间对象”的安全属性 lpBoundaryDescriptor [in]
一个边界描述符,调用者必须在这个边界内。
lpAliasPrefix [in]
命名空间的前缀,以后要在这个命名空间内创建内核对象的时候只需要如下填写对象名prefixobjectname
只要边界描述符是不同的,不同命名空间的前缀可以相同。
Return value 如果函数成功了,那么会返回一个到新的命名空间对象的句柄
如果函数失败了,那么函数会返回NULL,如果要得到更多的消息,那么调用GetLastError Remarks 其他应用程序可以访问命名空间通过调用OpenPrivateNamespace 创建此命名空间的应用程序可以调用ClosePrivateNamespace来关闭到该命名空间对象的句柄。当这个进程终止时,这个句柄也会被关闭。在到命名空间的句柄关闭后,后续对OpenPrivateNamespace的调用会全部失败,但是命名空间内的对象上的操作可以成功。
第二篇:使用DFS创建命名空间
使用DFS创建命名空间
如果想把零散的共享资源组织起来,可以使用DFS创建命名空间。以下是win7之家所介绍的建命名空间的步骤。
步骤1:打开【DFS管理】窗口,右击【命名空间】结点,执行【新建命名空间】命令,如下图所示。
新建命名空间
步骤2:windows7系统下载弹出【新建命名空间向导】对话框,根据向导提示填写相关的信息,即可顺利地新建命名空间。
第三篇:创建一个以你的名字命名的表空间
3、创建一个以你的名字命名的表空间,在此表空间增加一个数据文件。
4、分别设置表空间的状态为脱机、只读、读写和联机方式。5、6、7、8、5、创建一个新的数据库test.上机任务4 Oracle 10g数据库的角色和用户创建及权限设置
1、用命令方式在此数据库下创建一个以你的姓名缩写为名称的表空间。
2、在刚才创建好的表空间中创建一个以你的姓名缩写为名称的用户,密码为你的姓名缩写加学号。
3、把对SCOTT.DEPT表中更新DNAME的权限授予你刚创建的用户。
4、创建一个角色SUI使其对SCOTT.EMP的表有查询、更新、插入的权利。
5、把这个创建好的角色授予给在步骤二中创建的用户。
6、试着把创建表的管理权限授予你刚创建的用户。
7、四、上机内容(全部使用命令方式完成)
1、创建以你的名字命名的用户名和以你的五个同学的名字命名的五个用户。
2、在你的用户名下创建USERS表。
3、在USERS表中插入三条数据。
4、创建一个以你的名字缩写为名称的角色。
5、把对表USERS的查询、插入、删除、更新的权限授予你刚创建的角色。
6、把角色授予你的五个同学。
7、把对表USERS删除和插入权限从你五个同学那收回。
第四篇:WebSerives System.Xml.Serialization命名空间
要使用.NET进行对象的序列化,必须在解决方案中添加System.Xml的引用,并且在类文件中引入System.Xml.Serialization命名空间。这样就可以在文件中使用序列化所需要的各种特性了。
Imports System.Xml.Serialization
如果对XML Serialization缺少了解,请首先参考拙文:在.NET中实现对象序列化
上面的例子包含了典型的XML中常见的各种元素:XML声明、XML根节点、XML节点、XML属性、XML集合。除XML声明外,在.NET中都有对应的特性用于定义这些元素。这些特性包括:XmlRootAttribute、XmlTypeAttribute、XmlElementAttribute、XmlAttributeAttribute、XmlArrayAttribute和XmlArrayItemAttribute。另外,还有两个常用的特性,XmlIgnoreAttribute用于标记在对象序列化时需要被忽略的部分,XmlIncludeAttribute用于标记在生成XML Schema时需要包括的类型。
如果没有显式地标记任何特性,那么默认类的特性为XmlTypeAttribute、类成员的特性为XmlElementAttribute,且名称为类或类成员的名称。例如:
Public Class Order
Public ID As String
Public OrderDate As String
End Class
如果不做任何特性标记,使用下面的代码序列化时: Dim o As New Order
With o
.ID = 123456
.OrderDate = Date.Now.ToShortDateString
End With
Dim writer As New XmlTextWriter(“abc.xml”, Encoding.UTF8)
Dim serializer As New XmlSerializer(GetType(Order))
writer.Formatting = Formatting.Indented serializer.Serialize(writer, o)
序列化后的XML为:
可以看到,
XML声明是.NET自动添加的,但是encoding是在XmlTextWriter中指定的,如果不指定encoding,那么XML声明只有。我使用的是.NET 1.1,这个版本中只支持XML 1.0版本。另外,如果不指定encoding,那么默认的编码可能也是UTF8(没找到相关的资料)。
.NET默认为Order类添加了XMLSchema和XMLSchema-instance两个W3C的命名空间。该命名空间也可以自己指定,方法是使用XmlSerializer的另一个Serialize方法。
Dim ns As New XmlSerializerNamespaces ns.Add(“", ”“)writer.Formatting = Formatting.Indented serializer.Serialize(writer, o, ns)
要将类序列化为XML节点:
Public Class Order
‘ any code here.End Class
要将类序列化为XML根节点:
Public Class Order
‘ any code here.End Class
当在类中同时使用XmlRootAttribute、XmlTypeAttribute时,序列化文档中的类型以XmlRootAttribute为准:
Public Class Order
‘ any code here.End Class
要将类成员序列化为XML节点:
Public ID As String
要将类成员序列化为XML属性:
Public ID As String
要将类成员序列化为XML集合:
Public Class Order
Public ID As String
Public orderDate As String
Public Items As New ArrayList
End Class
Public Class OrderItem
Public Name As String
End Class
使用特性的一个好处是:可以在代码和序列化的文档中使用不同的编码规范。
第五篇:.Net常用命名空间和类介绍.doc
.Net常用命名空间和类介绍
一、基础命名空间 System.Collections 包含了一些与集合相关的类型,比如列表,队列,位数组,哈希表和字典等. System.IO 包含了一些数据流类型并提供了文件和目录同步异步读写. System.Text 包含了一些表示字符编码的类型并提供了字符串的操作和格式化 System.Reflection 包括了一些提供加载类型,方法和字段的托管视图以及动态创建和调用类 型功能的类型. System.Threading 提供启用多线程的类和接口.二、图形命名空间 System.Drawing 这个主要的GDI+命名空间定义了许多类型,实现基本的绘图类型(字体,钢笔,基本画笔等)和无所不能的Graphics对象. System.Drawing2D 这个命名空间提供高级的二维和失量图像功能. System.Drawing.Imaging 这个命名空间定义了一些类型实现图形图像的操作. System.Drawing.Text 这个命名空间提供了操作字体集合的功能. System.Drawing.Printing 这个命名空间定义了一些类型实现在打印纸上绘制图像,和打印机交互以及格式化某个打印任务的总体外观等功能.
三、数据命名空间 System.Data 包含了数据访问使用的一些主要类型. System.Data.Common 包含了各种数据库访问共享的一些类型. System.XML 包含了根据标准来支持XML处理的类. System.Data.OleDb 包含了一些操作OLEDB数据源的类型. System.Data.Sql 能使你枚举安装在当前本地网络的SQL Server实例. System.Data.SqlClient 包含了一些操作MS SQL Server数据库的类型,提供了和 System.Data.OleDb相似的功能,但是针对SQL做了优化. System.Data.SqlTypes 提供了一些表示SQL数据类型的类. System.Data.Odbc 包含了操作Odbc数据源的类型. System.Data.OracleClient 包含了操作Odbc数据库的类型. System.Transactions 这个命名空间提供了编写事务性应用程序和资源管理器的一些类.
四、WEB命名空间 System.Web 这个命名空间包含启用浏览器/服务器通信的类和接口.这些命名空间类用于管 理到客户端的HTTP输出和读取HTTP请求.附加的类则提供了一些功能,用于服 务器端的应用程序以及进程,Cookie管理,文件传输,异常信息和输出缓存的控制. System.Web.UI 这个命名空间包含Web窗体的类,包括Page类和用于创建Web用户界面的其 他标准类. System.Web.UI.HtmlControls 这个命名空间包含用于HTML特定控件的类,这些控件可以添加到Web窗体中 以创建Web用户界面
System.Web.UI.WebControls 包含创建ASP.NET服务器控件的类,当添加到窗体时,这些控件将呈现浏览器特 定的HTML和脚本,用于创建和设备无关的Web用户界面. System.Web.Mobile 包含生成ASP.NET移动应用程序所需要的核心功能,包括身份验证和错误处理. System.Web.UI.MobileControls 包括一组ASP.NET服务器控件,这些控件可以针对不同的移动设备呈现应用程 序. System.Web.Services 包含能使你使用和生成XML Web Service的类,这些服务是驻留在服务器中的 可编程实体,并通过标准Internet协议公开.五、框架服务命名空间 System.Diagnostics 这个命名空间所提供的类允许你启动系统进程,读取和写入事件日志以及使用性 能计数器监视系统性能. System.DirectoryServices 这个命名空间所提供的类可便于从托管代码中访问Active Directory.此命名空 间中的类可以与任何Active Directory服务提供程序一起使用. System.Media 包含用于播放声音文件和访问系统提供的声音的类. System.Management 这个命名空间提供的类用于管理一些信息和事件,它们关系到系统,设备和WMI 基础结构所使用的应用程序. System.Messaging 这个命名空间提供的类用于连接到网络上的消息队列,向队列发送消息,从队列 接收或查看消息. System.ServiceProcess 这个命名空间提供的类用于安装和运行服务,服务是长期运行的可执行文件,它 们不通过用户界面来运行. System.Timers 这个命名空间提供基于服务器的计时器组件,用以按指定的间隔引发事件.六、安全性命名空间 System.Security 这个命名空间提供公共语言运行库安全性系统的基础结构. System.Net.Security 这个命名空间提供用于主机间安全通信的网络流. System.Web.Security 这个命名空间包含的类用于在Web应用程序中实现ASP.NET安全性.七、网络命名空间 System.Net 包含的类可为当前网络上的多种协议提供简单的编程接口. System.Net.Cache 这个命名空间定义了一些类和枚举,用于为使用WebRequest和HttpWebRequest类获取的资源定义缓存策略. System.Net.Configuration 这个命名空间包含了以编程方式访问和更新System.Net命名空间的配置设置的类. System.Net.Mime 这个命名空间包含了用于将电子邮件发送到SMTP服务器进行传送的类. System.Net.Networkinformation 这个命名空间提供对网络流量数据,网络地址信息和本地计算机的地址更改通知 的访问,还包含实现Ping实用工具的类.你可以使用Ping和相关的类来检查是否
可通过网络访问某台计算机. System.Net.Sockets 这个命名空间为严格控制网络访问的开发人员提供Windows套接字接口的托 管实现
八、配置命名空间
System.Configuration 这个命名空间包含用于以编程方式访问.Net Framework配置设置并处理配置 文件中错误的类. System.Configuration.Assemblies 这个命名空间包含用于配置程序集的类. System.Configuration.Provider 这个命名空间包含由服务器和客户端应用程序共享,以支持可插接式模型轻松添 加或移除功能的基类.九、本地化命名空间 System.Globalization 包含的类定义与区域性相关的信息,其中包括语言,国家地区,所使用的日历,日期 格式的模式,货币与数字以及字符串的排序顺序. System.Resources 这个命名空间提供一些类和接口,它们使开发人员得以创建,存储并管理应用程序中使用的各种区域性特定资源. System.Resources.Tools 这个命名空间包含StronglyTypedResourceBuilder类,该类提供对强类型资源 的支持.这个编译时功能通过创建包含一组静态只读属性的类封装对资源的访问, 从而使得使用资源变得更加容易