如何用程序设置win2k中的目录共享权限 (100分)

  • 主题发起人 主题发起人 hxchxc
  • 开始时间 开始时间
H

hxchxc

Unregistered / Unconfirmed
GUEST, unregistred user!
我知道有个netshareadd的api函数,但是这个东西好像只能把一个目录设置为共享目录,而不<br>能设置权限,缺省的它的权限为everyone完全控制。<br>我这里有两千多个目录要设置不同的权限,各位帮帮忙。<br>
 
用delphi写是比较困难的,下面是用bcb写的<br>(假如你已经成功添加了一个testshared的共享,下面设置<br>仅“guest”用户有完全控制权限)<br><br>char* sid;<br>char* domain;<br>DWORD cbsid=0,cbdomain=0;<br>SID_NAME_USE name;<br>char username[]="guest"; //用户名<br>LookupAccountName(NULL,username,NULL,&amp;cbsid,NULL,&amp;cbdomain,&amp;name);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //得到缓冲区需要的长度<br>DWORD err=GetLastError();<br>if(err!=122)<br>&nbsp; throw Exception(SysErrorMessage(err));<br>domain=new char[cbdomain];<br>sid=new char[cbsid];<br>LookupAccountName(NULL,username,sid,&amp;cbsid,domain,&amp;cbdomain,&amp;name);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//得到guest用户的sid<br>delete[] domain;<br>delete[] sid;<br><br>char acl[1024];<br>InitializeAcl((ACL*)acl,sizeof acl,ACL_REVISION );<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//初始化一个空的acl<br>AddAccessAllowedAce((ACL*)acl,ACL_REVISION,GENERIC_ALL,sid);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//将允许sid(这里是guest用户)的权限加入acl<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// GENERIC_ALL就是“完全控制”<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// DELETE|GENERIC_WRITE 就是“更改”<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// GENERIC_EXECUTE|GENERIC_READ 就是“读取”<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//实际上面几个权限是可以自由组合的,比如你可以设置<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//GENERIC_READ|DELETE 的权限,这时候你在安全属性<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//看到读取和更改都没有打勾(因为有delete和write你才能看到<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//“更改”上打勾,有execute和read配合才能看到读取上打勾),<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//但是你实际上权限是设置成功的,可以读文件、删文件,<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//但是不能创建、修改文件<br><br>SECURITY_DESCRIPTOR sd;<br>InitializeSecurityDescriptor(&amp;sd,SECURITY_DESCRIPTOR_REVISION);<br>SetSecurityDescriptorDacl(&amp;sd,true,(ACL*)acl,false);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//将acl加入security descriptor<br><br>SHARE_INFO_1501 sinfo={0,&amp;sd};<br>NetShareSetInfo(NULL,L"testshared",1501,(unsigned char*)&amp;sinfo,NULL);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//设置共享的权限<br>
 
我自己找到了一个nt的工具包,里面有一个Rmtshare.exe的文件可是设置共享目录的权限。
 
可以把这个工具包发给我吗
 
你可以到www.os.net.cn中下载,有21.4M
 
hxchxc:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。<br>请认真阅读大富翁论坛规则说明 &nbsp;http://www.delphibbs.com/delphibbs/rules.htm
 
问题结束
 
多人接受答案了。
 
后退
顶部