📄 9.2.2 信任成员的管理.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0067)http://www.acejoy.com/Html/Article/network/6120061026093456_P2.html -->
<!--ace website head--><HTML><HEAD><TITLE>Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2)[ACE开发者-专注网络编程开发]</TITLE>
<META
content="Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2),Windows2000,服务器端,应用程序,开发,设计指南,信任成员,ACE,编程,开发,程序员指南,VC,C++,网络编程,学习,入门,笔记,ICE,TAO,ACE框架,ACE开发论坛,高性能,服务器,服务器端,后台程序,中间件,网游,Server,IOCP,EPOLL,完成端口,设计模式,异步,socket,windows,linux,unix,Reactor,Proactor,日志,定时器,Thread,线程池,主动对象,ACE_Streams,ACE_Module,Configurator,ACE_Task,ACE_Message_Queue,ACE_Proactor,ACE_Reactor,ACE_Process,消息队列,命名服务,并发,同步,互斥,事件,面向对象,P2P"
name=keywords>
<META
content="Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2)[Microsoft的开发者已经完成Microsoft Windows 2000安全性特色的设计工作,这些安全性特色比大多数人所习惯的环境更复杂且更有弹性。事实上,若加上适当的管理和软件开发,Windows 2000是现今最先进且安全的操作环境之一。然而,由于如此复杂而产生的大量细节以及纷繁难懂之处,]"
name=description>
<META content=TRUE name=MSSmartTagsPreventParsing>
<META http-equiv=Content-Language content=zh-CN>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=MSThemeCompatible content=Yes><LINK title=""
href="http://www.acejoy.com/RssFeed.Asp?ChannelID=1" type=application/rss+xml
rel=alternate><LINK href="9.2.2 信任成员的管理.files/Css2.css" type=text/css
rel=stylesheet>
<SCRIPT language=JavaScript src="9.2.2 信任成员的管理.files/stm31.js"></SCRIPT>
<SCRIPT language=JavaScript src="9.2.2 信任成员的管理.files/Font.js"></SCRIPT>
<META content="MSHTML 6.00.2900.3132" name=GENERATOR></HEAD>
<BODY>
<DIV class=twidth4>
<DIV class=twidth3>
<DIV class=twidth2>
<DIV class=twidth1>
<DIV class=twidth>
<TABLE id=sitehead cellSpacing=0 cellPadding=0 align=center border=0>
<TBODY>
<TR>
<TD class=l></TD>
<TD class=m>
<TABLE width="100%" align=center>
<TBODY>
<TR>
<TD align=middle width=200><A title=ACE开发者
href="http://www.acejoy.com/"><IMG height=60 alt=""
src="9.2.2 信任成员的管理.files/logo.gif" width=180 border=0></A></TD>
<TD align=middle><A href="http://shop34292573.taobao.com/"
target=_blank><IMG height=60 alt=贝贝花花包包店,精品555皮具,钱夹,皮夹
src="9.2.2 信任成员的管理.files/bao.gif" width=486 border=0></A>
<DIV align=center><BR></DIV></TD>
<TD style="LINE-HEIGHT: 120%" align=middle width=100><A
onclick='this.style.behavior="url(#default#homepage)";this.setHomePage("http://www.acejoy.com");'
href="http://www.acejoy.com/Html/Article/network/6120061026093456_P2.html#">设为首页</A><BR><A
href='javascript:window.external.addFavorite("http://www.acejoy.com","ACE开发者")'>加入收藏</A><BR></TD></TR></TBODY></TABLE></TD>
<TD class=r></TD></TR></TBODY></TABLE>
<TABLE id=navbar cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD class=l></TD>
<TD class=m><A class=ochannel title=ACE网络编程开发论坛,专注网络软件的开发!
href="http://www.acejoy.com/Index.asp">首页</A><!-- 频道名称分隔 --> <IMG
src="9.2.2 信任成员的管理.files/navbar_separator.gif" align=absMiddle
border=0> <A class=nchannel title=关于网络开发的文章,涉及ACE的编程使用开发
href="http://www.acejoy.com/Article/Index.asp">文章</A><!-- 频道名称分隔 --> <IMG
src="9.2.2 信任成员的管理.files/navbar_separator.gif" align=absMiddle
border=0> <A class=ochannel title=资源,源码,软件,开发书籍,下载
href="http://www.acejoy.com/Soft/Index.asp">资料</A><!-- 频道名称分隔 --> <IMG
src="9.2.2 信任成员的管理.files/navbar_separator.gif" align=absMiddle
border=0> <A class=ochannel title=专注网络软件开发,ACE的使用,跨平台应用
href="http://www.acejoy.com/bbs/index.asp" target=_blank>论坛</A></TD>
<TD class=r></TD></TR></TBODY></TABLE>
<TABLE id=navsub cellSpacing=0 cellPadding=0 align=center>
<TBODY>
<TR>
<TD class=l></TD>
<TD class=m
style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"> 位置: <A
href="http://www.acejoy.com/">ACE开发者</A> >> <A
href="http://www.acejoy.com/Article">文章</A> >> <A
href="http://www.acejoy.com/Html/Article/network/5_Index.html">网络编程</A>
>> 正文</TD>
<TD class=r></TD></TR></TBODY></TABLE><!--网站头部结束--><!--acejoy.com栏目部分--><!--
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="1" align="left" bgcolor="#F0F0F0"></td>
</tr>
<tr><td align="left"><script language = "JavaScript" type="text/javascript" src="/Js/ClassMenu/ClassMenu_1.Js"></script></td>
</tr>
</table>
--><!--文章频道Show模块 -->
<SCRIPT language=JavaScript>
function fontColor(objname)
{
var arr = showModalDialog("/Editor/Dialog/selcolor.htm", "", "dialogWidth:18.5em; dialogHeight:17.5em; status:0; help:0");
if (arr != null) setColor(objname,arr);
}
</SCRIPT>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD width="77%"><SPAN class=tt>阅读→</SPAN><FONT
color=#999999>Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2)</FONT></TD>
<TD width="23%">
<DIV align=right><FONT color=#ff0033>热</FONT> <IMG
alt=3星级 src="9.2.2 信任成员的管理.files/Star3.gif"
border=0></DIV></TD></TR></TBODY></TABLE></TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<DIV id=printBody>
<TABLE id=middle
style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all; TEXT-ALIGN: left"
cellSpacing=0 cellPadding=0 align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm vAlign=top><BR>
<DIV align=center>
<H1 class=aTitle>Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2)</H1></DIV>
<TABLE width="97%" align=center>
<TBODY>
<TR>
<TD width=502>
<DIV align=center>[日期:2006-10-26 来源:<A
href="http://www.acejoy.com/" target=_blank>ACE开发者</A><SPAN
id=SourceLabel></SPAN> 作者:Jeffrey Richter
Jason D. Clark<SPAN id=AuthorLabel>]</SPAN></DIV></TD>
<TD align=right width=209>
<DIV align=center>[字体: <INPUT title=把正文字体缩小 style="HEIGHT: 16px" onclick="fontSize('m','ArticleBody')" type=button value=小>
<INPUT title=把正文字体扩大 style="HEIGHT: 16px" onclick="fontSize('b','ArticleBody')" type=button value=大>
<INPUT title=转为简体中文模式 style="HEIGHT: 16px" onclick="bodytojt('ArticleBody')" type=button value=简>
<INPUT title=转为繁体中文模式 style="HEIGHT: 16px" onclick="bodytoft('ArticleBody')" type=button value=繁>
<A href="javascript:fontColor('ArticleBody')"><IMG alt=字体颜色
src="9.2.2 信任成员的管理.files/fgcolor.gif" align=absMiddle
border=0></A>]</DIV></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=5 cellPadding=0 width="100%" align=center border=0>
<TBODY>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=10 align=left border=0>
<TBODY>
<TR>
<TD></TD></TR></TBODY></TABLE>
<DIV class=content id=ArticleBody
style="PADDING-RIGHT: 10px; DISPLAY: block; PADDING-LEFT: 10px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
<P class=content>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>尽管LookupAccountName取得了电脑名称作为参数,它的搜寻并不限于所指定的机器。搜寻应该依据指示机器的观点来执行。这么说,以下的清单即显示出信任成员的搜寻顺序:</FONT></P><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2>
<OL style="LINE-HEIGHT: 25px">
<LI style="LINE-HEIGHT: 25px">众所周知的SID名称
<LI style="LINE-HEIGHT: 25px">在本地机器上内建及定义的帐户
<LI style="LINE-HEIGHT: 25px">这个系统的主要网域
<LI style="LINE-HEIGHT: 25px">受信任的网域
<LI style="LINE-HEIGHT: 25px">在网域树系中的任一个网域 </LI></OL></FONT>
<HR style="LINE-HEIGHT: 25px">
<P><FONT style="LINE-HEIGHT: 25px" face=Arial color=#3e77d7 size=3
Black><B style="LINE-HEIGHT: 25px">说明</B></FONT> </P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>尽管您可以使用LookupAccountName找出众所周知的SIDs,您还是应该经常使用AllocateAndInitializeSid来直接建立众所周知的SIDs。</FONT></P>
<HR style="LINE-HEIGHT: 25px">
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>如您所看到的,信任成员的名称空间在使用者、群组、电脑及网域之间被分享。尽管系统不允许您使用与另一个使用者或群组相同的名称建立一位使用者或群组,但系统允许使用者或群组拥有与电脑或网域相同的名称。这产生了潜在的问题,因为LookupAccountName会在SID被回传给使用者之前即传给电脑。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您的软件必须为使用者或群组可能会有和电脑或网域相同的名称负责。处理这个情形的最好方法是明确地指出电脑名称给帐户,以作为帐户名称的一部份。举例来说,假如电脑和使用者都取名为「JClark」,而「JClark」帐户已存在「JClark」电脑上,以下的程序代码将传回SID给使用者帐户:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL fRet = LookupAccountName(NULL, "JClark\\JClark", <BR> &sid, &dwSizeSid, szBuffer, &dwSizeBuf, &use);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7
size=3><B style="LINE-HEIGHT: 25px">撷取信任成员的帐户名称<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>假如您的软件需要为信任成员找出帐户名称,在它已经拥有二进制的SID时应该使用LookupAccountSid函数:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL LookupAccountSid( <BR> PCTSTR pszSystemName, <BR> PSID pSid, <BR> PTSTR pszName, <BR> PDWORD pcbName, <BR> PTSTR pszReferencedDomainName, <BR> PDWORD pcbReferencedDomainName, <BR> PSID_NAME_USE peUse);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>PszSystemName参数是您执行搜寻所在的机器名称。当LookupAccountSid搜寻一个信任成员名称时,它会与LookupAccountName使用相同的搜寻顺序及规则。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>Psid是个指向您想撷取之与帐户名称一致的现行SID指标。这个SID可以是您建立的,或是系统事先在token以及其他结构中传回的任何一个有效SID。PszName及pszReferencedDomainName应该指向您提供用来从系统接收信任成员的名称及它的网域名称缓冲器。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>这些缓冲器应该要足够大,以持有传回的值;它们的大小会经由指向DWORD变数的指标来传递,pcbName指出经由它所指向的缓冲器长度,而pcbReferencedDomainName则指出经由它指向的缓冲器长度。假如您不传递足够大小的缓冲器以从系统接收这些名称的话,系统会在这两个变数中传回所需的缓冲器大小。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您应该传递SID_NAME_USE变数的位址给peUse,以从系统接收使用的SID。有关SID_NAME_USE之列举型别类型的说明,请参阅 </FONT><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000 size=2><A
style="LINE-HEIGHT: 25px"
href="http://www.acejoy.com/doc/serverside/9.htm#431_1"
target=_new>表9-9</A> 。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7
size=4><B style="LINE-HEIGHT: 25px">复制SIDs<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>许多系统函数会传回SIDs,同时有许多与安全性相关的函数会期待您建立包含SIDs或指向SIDs指标的结构。这不是问题,除了SID结构在长度上是可变的以外,系统设计者要求我们将结构看成是不透明的。幸运的是,系统提供了一个用来复制SID的函数:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL CopySid( <BR> DWORD dwDestinationSidLength, <BR> PSID pSidDestination, <BR> PSID pSidSource);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>这个容易使用的函数简单地取得您的缓冲器长度(以位元组)、一个指向目的SID的指标及一个指向最初SID的指标。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>尽管系统知道它正在复制的SID长度,它仍旧需要确定不会被写入超过缓冲器的长度。这就是为什么CopySid要求您传递一个长度以作为第一个参数的原因。更重要的是,您将会需要知道被指派的缓冲器有多大。可以使用GetLengthSid函数找出以位元组计算的SID长度:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">DWORD GetLengthSid(PSID pSid);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您可以使用这个函数传回的值指派一个缓冲器给您的新SID。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e72d7
size=4><B style="LINE-HEIGHT: 25px">文字与二进制SID的转换<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>到了这个时候,您应该已经知道如何执行这些有关SIDs的经常需求工作部份。然而,我们对SIDs的讨论还不完整,除非我告诉您如何将代表SID的文字转换成以二进制表示,反之亦然。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>在继续讨论前,先说明什么是所谓的「文字SID」。我不谈论代表信任成员帐户名称的字串;而谈论代表二进制SID结构的字串。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>举例来说,「S-1-1-0」是一个代表SID的文字SID,它的信任成员帐户名称是Everyone。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>当储存SID名称到持久的储存器中,例如系统登录,或是在使用者介面中表示一个SID时,文字SIDs会是非常有帮助的。您可以用来转换文字SIDs的函数,分别是ConvertSidToStringSid及ConvertStringSidToSid。以下是它们的函数原型:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">BOOL ConvertSidToStringSid( <BR> PSID pSid, <BR> PTSTR* StringSid); <BR>BOOL ConvertStringSidToSid( <BR> PCTSTR StringSid, <BR> PSID* ppSid);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>这两个函数都会指派缓冲器给您,当您完成传回的资料时,释放缓冲器即是您的工作。可以使用LocalFree函数来释放这些函数传回的缓冲器。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>现在您对系统信任成员帐户的二进制识别资料已有彻底的认识,所以您已经拥有所有本章之前叙述之利用本机群组操作成员方法的必要资讯。让我们开始讨论指派及移除信任成员的权限。</FONT></P><A
style="LINE-HEIGHT: 25px" name=209005>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e70d7
size=5><B style="LINE-HEIGHT: 25px">认识权限与帐户权利<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>权限是指派权利给广大系统分枝的信任成员(相对之下,指派给信任成员的存取权利则定义允许存取系统中的特定物件)。权限的例子包括登入本机的权利、备份文件与目录,以及关闭系统。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -