发现文章标题:(FINISHED)(COPIED)创建一个私有命名空间[定稿]
(FINISHED)(COPIED)创建一个私有命名空间[定稿]
第一篇:(finished)(copied)创建一个私有命名空间[定稿]以下列出创建一个私有命名空间的步骤以及函数知识点
源码:
intwinapiwinmain(…){
//创建一个边界描述符
charszboundarytext[]=“boundary”;
handlehboundary=createboundarydescriptor(szboundarytext,0);
//创建一个sid
bytelocaladminsid[security_max_sid_size];
psidplocaladminsid=&localadminsid;
dwordcbsid=sizeof(localadminsid);
createwellknownsid(winbuiltinadministratorssid,null,plocaladminsid,&cbsid);
//将sid和边界描述符关联起来
addsidtoboundarydescriptor(&hboundary,plocaladminsid);
//初始化安全描述符
security_attributessa;
sa.binherithandle=false;
sa.nlength=sizeof(sa);
convertstringsecuritydescriptortosecuritydescriptor(text(“d(a;;ga;;;ba)”),sddl_revision_1,&sa.lpsecuritydescriptor,null);
//创建私人命名空间,第三个参数就是以后用的前缀
handlehnamespace=createprivatenamespace(&sa.hboundary,szboundarytext);
//释放安全描述符
localfree(sa.lpsecuritydescriptor);
//尝试在私人命名空间中创建一个mutexobject,并检测是否为首例程
handlehmutex=createmutex(null,false,text(“boundary\mutex”));
if(getlasterror==error_already_exists)printf(“anotherinstanceisrunning\n”);
elseprintf(“firstinstance”);}
下面介绍函数
createboundarydescriptorhandlewinapicreateboundarydescriptor(
_in_lpctstrname,
_in_ulongflags);parametersname[in]
边界描述符的名字flags[in]
保留,设为nullreturnvalue
如果函数成功了,返回值就是一个到边界描述符的句柄
如果函数失败了,那么返回值就是null。可以调用getlasterror来获得更多的错误信息.remarks
一个新的边界描述符必须有至少一个的sid。
createwellknownsidboolwinapicreatewellknownsid(
_in_
well_known_sid_typewellknownsidtype,
_in_opt_
psiddomainsid,
_out_opt_psidpsid,
_inout_
dword*cbsid);parameterswellknownsidtype[in]
(未完,全文共4737字,当前显示1447字)
(请认真阅读下面的提示信息)