//..定义变量略
cbDomainName=255;
cbSid=255;
sprintf(netBuf,"\\\\%s\\ipc$",Form1->Edit1->Text.c_str());
sprintf(netNB,"\\\\%s",Form1->Edit1->Text.c_str());
netr.dwScope=RESOURCE_GLOBALNET;
netr.dwType=RESOURCETYPE_ANY;
netr.lpLocalName="";
netr.lpRemoteName=netBuf;
netr.lpProvider=NULL;
dwResult=WNetAddConnection2(&netr,"","",NULL);
//首先用WNetAddConnection2以空(IPC$)方式连接服务器。
if(dwResult==NO_ERROR)
{
if(LookupAccountName(netNB,"Guest",Sid,&cbSid,DomainName,&cbDomainName,&peUse))
//然后以LookupAccountName用一个系统和帐户名称作为输入,得到域名
{
Form1->ListBox1->Items->Add("域名: "+String(netBuf));
SidIdentify=GetSidIdentifierAuthority(Sid);
//接着用GetSidIdentifierAuthority返回一个指定的安全标识符结构
SidSubCount=*GetSidSubAuthorityCount(Sid);
//再用GetSidSubAuthorityCount返回指定安全标识符结构中指定的子权限的地址
StoreCount=SidSubCount;
for(i=0;i<=StoreCount-1;i++)
{
dwTemp=*GetSidSubAuthority(Sid,i);//接着用GetSidSubAuthority函数返回数组地址
storeSIDsub[i]=dwTemp;
}
cbDomainName=255;
cbAccountBuff=255;
storeSIDsub[StoreCount-1]=500;
if(AllocateAndInitializeSid(SidIdentify,SidSubCount,storeSIDsub[0],storeSIDsub[1],
storeSIDsub[2],storeSIDsub[3],storeSIDsub[4],storeSIDsub[5],
storeSIDsub[6],storeSIDsub[7],&newSid))
//再用AllocateAndInitializeSid将八个子权限分配初始化这个安全标识符
{
if(LookupAccountSid(netNB,newSid,AccountBuff,&cbAccountBuff,DomainName,&cbDomainName,&peUse))
//最后用LookupAccountSid接受一个安全标识符作为输入即可得到用户名。
{
Form1->ListBox1->Items->Add("用户名称: "+String(AccountBuff));
}
}
//..枚举过程略
------------------
大家好,
------------------
沧海一声笑
滔滔两岸潮
浮沉随浪
只记今朝
苍天笑
纷纷世上潮
谁负谁胜出
天知晓
江山笑
烟雨遥
涛浪汹尽红尘俗世几多娇