📄 9.1.3 信任成员的管理.htm
字号:
size=2>NetUserGetLocalGroups函数的原型如下:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">NET_API_STATUS NetUserGetLocalGroups( <BR> PCWSTR pszServerName, <BR> PCWSTR pszUsername, <BR> DWORD dwLevel, <BR> DWORD dwFlags, <BR> PBYTE* ppbBuf, <BR> DWORD dwPrefMaxLen, <BR> PDWORD pdwEntriesRead, <BR> PDWORD pdwTotalEntries);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>如您所见,这个函数与我们讨论过的NetLocalGroupEnum及NetUserEnum函数看起来很类似。事实上,主要的不同处在于这个函数使用了LOCALGROUP_USERS_INFO_*
结构集(LOCALGROUP_USERS_INFO_0至今仍存在)。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>dwFlags唯一有效的值即是LG_INCLUDE_INDIRECT,它指示NetUserGetLocalGroups也应该传回为间接成员群组的使用者(由pszUsername指出),或者是0,即指示函数应该只传回为直接成员群组的使用者。当pszUsername为通用群组或是网域群组的成员时-即本机群组的成员,可能也会产生间接成员的情形。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您可以传递MAX_PREFERRED_LENGTH给dwPrefMaxLen参数,但是无论使用何种方式,您都必须注意经由pdwEntriesRead参数及pdwTotalEntries参数传回的值,以确定所有可能的项目皆被传回。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>和之前的列举函数不同,它没有再次呼叫NetUserGetLocalGroups继续列举的方法。您不太可能会面临列举多于几十个群组的状况,而列举使用者可能会传回数千个帐户项目。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#3e74d7
size=3><B style="LINE-HEIGHT: 25px">使用NetLocalGroupGetMembers函数<BR
style="LINE-HEIGHT: 25px"> </B></FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>第二个列举成员资讯的方式是撷取与个别群组关联的成员组。您应该使用NetLocalGroupGetMembers函数这样做:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">NET_API_STATUS NetLocalGroupGetMembers( <BR> PCWSTR pszServerName, <BR> PCWSTR pszLocalGroupName, <BR> DWORD dwLevel, <BR> PBYTE* ppbBuf, <BR> DWORD dwPrefMaxLen, <BR> PDWORD pdwEntriesRead, <BR> PDWORD pdwTotalEntries, <BR> PDWORD_PTR pdwResumeHandle);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>这个函数会取得服务器名称及本机群组名称以作为它的第一个参数。常见的dwLevel参数指出您想要经由ppbBuf参数传回的LOCALGROUP_MEMBERS_INFO_*
结构集level。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>LOCALGROUP_MEMBERS_INFO_*
结构允许您处理信任成员名称及网域名称,或是它们的SIDs,下一节将作详细地说明。以下是LOCALGROUP_MEMBERS_
INFO_0 及 LOCALGROUP_MEMBERS_INFO_3 结构的定义:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">typedef struct _LOCALGROUP_MEMBERS_INFO_0 { <BR> PSID lgrmi0_sid; <BR>}LOCALGROUP_MEMBERS_INFO_0; <BR>typedef struct _LOCALGROUP_MEMBERS_INFO_3 { <BR> PWSTR lgrmi3_domainandname; <BR>}LOCALGROUP_MEMBERS_INFO_3;</PRE></FONT></DIV>
<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>处理信任成员时,了解许多安全性函数所需的SID值是很重要的。再者,就SIDs来说,本机群组成员的操作函数可让您撷取信任成员项目。</FONT></P>
<HR style="LINE-HEIGHT: 25px">
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>LOCALGROUP_MEMBERS_INFO_0中使用的PSID类型指出一个指向SID结构的指标。这些结构的任何一个都可根据您软件的需要而与NetLocalGroupGetMembers一起使用。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>dwPrefMaxLen、pdwEntriesRead、pdwTotalEntries及pdwResumeHandle参数是惯用缓冲器大小、读取的项目、剩下的项目以及继续列举型别的值。这些参数和已经讨论过的NetUserEnum及NetLocalGroupEnum函数中相同名称的参数一样,以完全相同的方式运作。事实上,为了与NetLocalGroupGetMembers一起使用,NetLocalGroupEnum的一部分范例函数PrintLocalGroups,可以容易地修改如下:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">void PrintLocalGroupMembers(WCHAR *pszGroup) { <BR> ULONG_PTR lResume = 0; <BR> ULONG lTotal = 0; <BR> ULONG lReturned = 0; <BR> ULONG lIndex = 0; <BR> NET_API_STATUS netStatus; <BR> LOCALGROUP_MEMBERS_INFO_3* pinfoMembers; <BR> do { <BR> netStatus = NetLocalGroupGetMembers(NULL, pszGroup, 3, <BR> (PBYTE*) &pinfoMembers, MAX_PREFERRED_LENGTH, <BR> &lReturned, &lTotal, &lResume); <BR> if ((netStatus == ERROR_MORE_DATA) || <BR> (netStatus == NERR_Success)) { <BR> for (lIndex = 0; lIndex < lReturned; lIndex++) { <BR> wprintf(L"%s\n", <BR> pinfoMembers[lIndex].lgrmi3_domainandname); <BR> } <BR> NetApiBufferFree(pinfoMembers); <BR> } <BR> }while (netStatus == ERROR_MORE_DATA); <BR>}</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>使用NetLocalGroupSetMembers函数来设定本机群组的成员:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">NET_API_STATUS NetLocalGroupSetMembers( <BR> PCWSTR pszServerName, <BR> PCWSTR pszGroupName, <BR> DWORD dwLevel, <BR> PBYTE pbBuf, <BR> DWORD dwTotalEntries);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>PszServerName及pszGroupName参数指示您正在设定成员的系统名称及本机群组。DwLevel参数指出您想要使用的LOCALGROUP_MEMBERS_INFO_*
结构集level。您可以传递0或3,以分别表示LOCALGROUP_MEMBERS_INFO_0或LOCALGROUP_MEMBERS_INFO_3,两者在稍早都已定义过。这意味着您可以选择使用信任成员帐户名称字串或是SIDs来设定成员。</FONT></P>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您应该传递一个指标到选择的结构类型阵列给pbBuf参数,以及阵列中项目的数量为dwTotalEntries参数的内容。假如函数执行成功,被pbBuf以阵列传递之表示信任成员清单将是这个群组的新成员清单。记住信任成员清单将会取代任一个现行的群组成员。如果函数执行成功,将传回NERR_Success。</FONT></P>
<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>现在您知道撷取及设定所有本机群组之信任成员的方法,还有两个有用的函数,可让您从现行成员的群组中,只新增及删除特定的信任成员清单。这两个函数分别是NetLocalGroupAddMembers及NetLocalGroupDelMembers:</FONT></P>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">NET_API_STATUS NetLocalGroupAddMembers( <BR> PCWSTR pszServerName, <BR> PCWSTR pszGroupName, <BR> DWORD dwLevel, <BR> PBYTE pbBuf, <BR> DWORD dwTotalEntries); <BR>NET_API_STATUS NetLocalGroupDelMembers( <BR> PCWSTR pszServerName, <BR> PCWSTR pszGroupName, <BR> DWORD dwLevel, <BR> PBYTE pbBuf, <BR> DWORD dwTotalEntries);</PRE></FONT></DIV>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>您可以使用跟NetLocalGroupSetMembers一样的方式使用这些函数。关于范例的部份,请参阅本章稍后叙述的 </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#209007"
target=_new>TrusteeMan范例应用程序</A> 。</FONT></P><A
style="LINE-HEIGHT: 25px" name=209004></DIV></A></DIV< p>
<P class=content_page><A
href="http://www.acejoy.com/Html/Article/network/6020061026092905_P2.html">上一页</A> <A
href="http://www.acejoy.com/Html/Article/network/6020061026092905.html">[1]</A> <A
href="http://www.acejoy.com/Html/Article/network/6020061026092905_P2.html">[2]</A> <STRONG><FONT
color=#ff0033>[3]</FONT></STRONG> </P>
<DIV></DIV><BR><BR></TD></TR></TBODY></TABLE>
<TABLE style="CLEAR: both" cellSpacing=0 cellPadding=0 width="97%">
<TBODY>
<TR>
<TD align=right>
<TABLE>
<TBODY>
<TR>
<TD>阅读:<SPAN id=news_hits></SPAN>
<SCRIPT src="9.1.3 信任成员的管理.files/GetHits.htm"
type=text/JavaScript></SCRIPT>
次<BR>录入:<A
href="http://www.acejoy.com/User/Info.Asp?UserName=admin">admin</A><BR><BR></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right>【 <A
href="http://www.acejoy.com/Comment.asp?ChannelID=1&Action=Write&InfoID=60">评论</A>
】 【 <A
href="http://www.acejoy.com/User/SendMail.asp?Title=Windows2000 服务器端应用程序开发设计指南-信任成员的管理(1)"
target=_blank>推荐</A> 】 【 <A href="javascript:window.print()">打印</A>
】 </TD></TR></TBODY></TABLE>
<TABLE style="CLEAR: both" width="97%" align=center>
<TBODY>
<TR>
<TD>上一篇:<A
title="标题:Windows2000 服务器端应用程序开发设计指南-Windows Management Instrumentation 作者:Jeffrey Richter Jason D. Clark 更新:2006-10-23 9:19:39 点击:761"
href="http://www.acejoy.com/Html/Article/network/5920061023091939.html">Windows2000
服务器端应用程序开发设计指南-Windows Management Instrumentation</A><BR>下一篇:<A
title="标题:Windows2000 服务器端应用程序开发设计指南-信任成员的管理(2) 作者:Jeffrey Richter Jason D. Clark 更新:2006-10-26 9:34:56 点击:485"
href="http://www.acejoy.com/Html/Article/network/6120061026093456.html">Windows2000
服务器端应用程序开发设计指南-信任成员的管理(2)</A> </TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm><SPAN class=tt>相关新闻</SPAN> </TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm>
<TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<SCRIPT language=javascript
src="9.1.3 信任成员的管理.files/GetCorrelative.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm><SPAN class=tt>本文评论</SPAN> </TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm>
<P> </P>
<TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<SCRIPT language=javascript
src="9.1.3 信任成员的管理.files/Comment.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm></TD>
<TD class=mr></TD></TR></TBODY></TABLE></DIV>
<TABLE id=footer cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR style="LINE-HEIGHT: 130%" align=middle>
<TD height=23> <A
href='javascript:window.external.addFavorite("http://www.acejoy.com","ACE开发者")'><FONT
color=#000000>加入收藏</FONT></A> - <A
href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT
color=#000000>关于本站</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/Help.asp?Action=Copyright" target=_blank><FONT
color=#000000>版权申明</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT
color=#000000>联系站长</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/LinkSite.asp" target=_blank><FONT
color=#000000>友情链接</FONT></A> </TD></TR>
<TR align=middle>
<TD height=23>Copyright© 2004-2006 <A
href="http://www.acejoy.com/">http://www.acejoy.com/</A> .All Rights
Reserved <A href="http://www.miibeian.gov.cn/" target=_blank>京ICP备06055248
</A>
<SCRIPT language=JavaScript src="9.1.3 信任成员的管理.files/stat.htm"
charset=gb2312></SCRIPT>
</TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV><!--Powered by:CreateLive CMS Version 3.1(www.acejoy.com) CreateDate:2007-3-4 10:50:39--></DIV></DIV></DIV></DIV></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -