1

我正在尝试创建一个仅允许管理员用户写入/读取的共享文件夹。

这就是我所拥有的:

 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);

我找不到共享权限的选项。这只允许我设置写/读/执行...权限。

任何人以前这样做过并且可以提供一点帮助吗?

4

1 回答 1

0

您可以通过在共享上设置 DACL(自由访问控制列表)来控制谁可以访问共享。

您可以通过调用GetNamedSecurityInfo来检索对象的当前权限,然后修改 DACL,然后调用SetNamedSecurityInfo以将修改后的 DACL 与共享相关联来做到这一点。

或者,您可以使用信息级别 503 调用NetShareGetInfo检索当前安全描述符,然后修改 DACL,然后使用信息级别 1501 调用NetShareSetInfo修改后的安全描述符与共享相关联。

但是,如果没有很好的理由不这样做,我会使用 Get/SetNamedSecurityInfo。操作 DACL 已经够痛苦的了——你不需要增加任何额外的难度。

于 2013-07-16T15:28:39.453 回答