我正在尝试创建一个共享文件夹,只允许管理员用户写入/读取它。
这就是我所拥有的:
NET_API_STATUS res;
SHARE_INFO_2 p;
DWORD parm_err = 0;
// Fill in the SHARE_INFO_2 structure.
//
p.shi2_netname = TEXT("QueuesSHAREDTest");
p.shi2_type = STYPE_DISKTREE; // disk drive
p.shi2_remark = TEXT("TESTSHARE to test Queues Folders");
p.shi2_permissions = 0;
p.shi2_max_uses = -1;
p.shi2_current_uses = 0;
p.shi2_path = TEXT(Path);
p.shi2_passwd = NULL; // no password
//
// Call the NetShareAdd function,
// specifying level 2.
//
res=NetShareAdd(NULL, 2, (LPBYTE) &p, &parm_err);
//
// If the call succeeds, inform the user.
//
if(res==0)
printf("Share created.\n");
// Otherwise, print an error,
// and identify the parameter in error.
//
else
printf("Error: %u\tparmerr=%u\n", res, parm_err);
我无法找到共享权限的选项。 这只允许我设置写/读/执行...权限。
之前有人这样做过,可以帮一下吗?
答案 0 :(得分:0)
您可以通过在共享上设置DACL(自由访问控制列表)来控制谁可以访问共享。
您可以通过调用GetNamedSecurityInfo
来检索对象的当前权限,然后修改DACL,然后调用SetNamedSecurityInfo
以将修改后的DACL与共享相关联。
或者,您可以使用NetShareGetInfo
调用information level 503来检索当前安全描述符,然后修改DACL,然后使用NetShareSetInfo
调用information level 1501以关联修改后的安全性描述与共享。
然而,缺乏一个非常好的理由,我会使用Get / SetNamedSecurityInfo。操纵DACL足够痛苦 - 您不需要添加任何额外的难度。