请教各位大大们:假设局域网内有A01、B01、C01等用户,现在想在服务器端(wind2003serv)用vb实现如下功能---
1、创建用户,并可以设置密码
2、在某个目录下如:E:\sharefiles中建立几个与用户名同名的文件夹,并设为共享;
3、并设置权限为:A01用户通过密码只能访问并能读写A01这个文件夹中的文件;B01用户通过密码只能访问并能读写B01文件夹中的文件,……;
4、且对某个用户而言,其它用户的文件夹是隐藏的。
5、可以设置某个文件夹为全部用户都共享,可见的,但只能读取。
想用vb编程实现以上功能,其中第1、2个功能已经实现,但其它功能不知如何才能做到?
1、创建用户,并可以设置密码
2、在某个目录下如:E:\sharefiles中建立几个与用户名同名的文件夹,并设为共享;
3、并设置权限为:A01用户通过密码只能访问并能读写A01这个文件夹中的文件;B01用户通过密码只能访问并能读写B01文件夹中的文件,……;
4、且对某个用户而言,其它用户的文件夹是隐藏的。
5、可以设置某个文件夹为全部用户都共享,可见的,但只能读取。
想用vb编程实现以上功能,其中第1、2个功能已经实现,但其它功能不知如何才能做到?
BOOL SetNetSharePermission(char *pszSharedName, char *pszUserName, DWORD dwAccessPermissions)
{
PACL pNewAcl = NULL;
PSECURITY_DESCRIPTOR psd = NULL;
DWORD dwError;
PACL ExistingDacl;
BOOL bReturnValue = FALSE; try
{
dwError = GetNamedSecurityInfo(pszSharedName, SE_LMSHARE, DACL_SECURITY_INFORMATION, NULL, NULL, &ExistingDacl, NULL, &psd);
if(dwError != ERROR_SUCCESS)return FALSE;
EXPLICIT_ACCESS explicitaccess;
BuildExplicitAccessWithName(&explicitaccess, pszUserName, dwAccessPermissions, SET_ACCESS, NO_INHERITANCE);
if(ERROR_SUCCESS == SetEntriesInAcl(1, &explicitaccess, ExistingDacl, &pNewAcl))
bReturnValue = (ERROR_SUCCESS == SetNamedSecurityInfo(pszSharedName, SE_LMSHARE, DACL_SECURITY_INFORMATION, NULL, NULL, pNewAcl, NULL)); if(pNewAcl != NULL)AccFree(pNewAcl);
if(psd != NULL)AccFree(psd);
}
catch(...)
{
}
return bReturnValue;
};
c:\>cacls /?
显示或者修改文件的访问控制表(ACL)CACLS filename [/T] [/E] [/C] [/G user:perm] [/R user [...]]
[/P user:perm [...]] [/D user [...]]
filename 显示 ACL。
/T 更改当前目录及其所有子目录中
指定文件的 ACL。
/E 编辑 ACL 而不替换。
/C 在出现拒绝访问错误时继续。
/G user:perm 赋予指定用户访问权限。
Perm 可以是: R 读取
W 写入
C 更改(写入)
F 完全控制
/R user 撤销指定用户的访问权限(仅在与 /E 一起使用时合法)。
/P user:perm 替换指定用户的访问权限。
Perm 可以是: N 无
R 读取
W 写入
C 更改(写入)
F 完全控制
/D user 拒绝指定用户的访问。
在命令中可以使用通配符指定多个文件。
也可以在命令中指定多个用户。