VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2801|回复: 11

超难的问题:如何共享文件夹,再设置共享文件夹的共享权限?

[复制链接]

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-2-8 05:30:01 | 显示全部楼层 |阅读模式
如何共享文件夹,再设置共享文件夹的共享权限?

最好有测试的代码。
谢谢!!!
回复

使用道具 举报

0

主题

22

帖子

14.00

积分

新手上路

Rank: 1

积分
14.00
发表于 2020-3-31 19:45:02 | 显示全部楼层
unit   My_Share;   
   
  interface   
  uses   
        SysUtils;   
  type   
      Share_Info50   =   packed   record   
          shi50_netname:   array[0..12]   of   Char;   {13}   
          shi50_type:   Byte;   
          shi50_flags:   Word;   
          shi50_remark:   PChar;   
          shi50_path:   PChar;   
          shi50_rw_password:   array[0..8]   of   Char;   {9}   
          shi50_ro_password:   array[0..8]   of   Char;   
      end;   
  const                  
      STYPE_DISKTREE   =   0;   {磁盘共享}   
      STYPE_PRINTQ   =   1;   {打印机共享}   
   
   
      SHI50F_RDONLY   =   1;   {   只读共享}   
      SHI50F_FULL   =   2;   {   完全共享}   
      SHI50F_DEPENDSON   =   (SHI50F_RDONLY   or   SHI50F_FULL);   {进入需要口令}   
   
      SHI50F_PERSIST   =   256;   {此选项:计算机重新启动后才生效}   
      SHI50F_SYSTEM   =   512;   {此选项:即时生效,且击右键无法看到共享}   
  function   ShareResource(ServerName:   PChar;   FilePath:   PChar;   
      NetName:   PChar;   Remark:   PChar;   
      ShareType:   Byte;   Flags:   Word;   
      RWPass:   PChar;   ROPass:   PChar):   Integer;   
      function   DeleteShare(ServerName:   PChar;   NetName:   PChar):   Integer;   
  function   NetShareAdd(ServerName:   PChar;   ShareLevel:   SmallInt;   Buffer:   Pointer;   Size:   Word):   Integer;   StdCall;   
  function   NetShareDel(ServerName:   PChar;   NetName:   PChar;   Reserved:   Word):   Integer;   StdCall;   
   
  implementation   
   
  function   ShareResource(ServerName:   PChar;   FilePath:   PChar;   
      NetName:   PChar;   Remark:   PChar;   
      ShareType:   Byte;   Flags:   Word;   
      RWPass:   PChar;   ROPass:   PChar):   Integer;   {目录共享}   
  var   
      MyShare:   Share_Info50;   
      PMyShare:   ^Share_Info50;   
  begin   
      strLcopy(MyShare.shi50_netname,   NetName,   13);   
      MyShare.shi50_type   :=   ShareType;   
      MyShare.shi50_flags   :=   Flags;   
      MyShare.shi50_remark   :=   Remark;   
      MyShare.shi50_path   :=   FilePath;   
      strLcopy(MyShare.shi50_rw_password,   RWPass,   9);   
      strLcopy(MyShare.shi50_ro_password,   ROPass,   9);   
      PMyShare   :=   @MyShare;   
      Result   :=   NetShareAdd(ServerName,   50,   PMyShare,   SizeOf(MyShare));   
  end;   
   
  function   DeleteShare(ServerName:   PChar;   NetName:   PChar):   Integer;   {撤消共享目录}   
  begin   
      Result   :=   NetShareDel(ServerName,   NetName,   0);   
  end;   
   
  function   NetShareAdd;   external   'SVRAPI.DLL';   
  function   NetShareDel;   external   'SVRAPI.DLL';{注意:NT/2000下要改为NETAPI32.DLL,可以在程序中判断系统来加载不同的DLL   }   
  end.   
回复

使用道具 举报

1

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
 楼主| 发表于 2020-4-3 13:45:01 | 显示全部楼层
楼上的好像不对哦
NetShareAdd(ServerName,   50,   PMyShare,   SizeOf(MyShare));   
这个好像只有2种也
Value        Meaning
2        The buf parameter points to an array of SHARE_INFO_2 structures.
502        The buf parameter points to an array of SHARE_INFO_502 structures.
而且你的只是共享文件夹的代码,还有设置共享访问权限的没有嘛

回复

使用道具 举报

0

主题

14

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-4-4 19:45:01 | 显示全部楼层
楼主理解错了,
level        是指用的类型
当level是2时 buf用 SHARE_INFO_2 structures.
当level是502时 buf用 SHARE_INFO_502 structures.

而且可以设置权限,SHARE_INFO_502.shi502_permissions就是设置权限的,包括以下权限:
ACCESS_READ        Permission to read data from a resource and, by default, to execute the resource.
ACCESS_WRITE        Permission to write data to the resource.
ACCESS_CREATE        Permission to create an instance of the resource (such as a file); data can be written to the resource as the resource is created.
ACCESS_EXEC        Permission to execute the resource.
ACCESS_DELETE        Permission to delete the resource.
ACCESS_ATRIB        Permission to modify the resource's attributes (such as the date and time when a file was last modified).
ACCESS_PERM        Permission to modify the permissions (read, write, create, execute, and delete) assigned to a resource for a user or application.
ACCESS_ALL        Permission to read, write, create, execute, and delete resources, and to modify their attributes and permissions.
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-4 23:30:02 | 显示全部楼层
shi_permissions

Value       
ACCESS_READ
ACCESS_WRITE
ACCESS_CREATE
ACCESS_EXEC       
ACCESS_DELETE       
ACCESS_ATRIB
ACCESS_PERM
ACCESS_ALL       


回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-17 18:15:01 | 显示全部楼层
若要指定共享的用户怎么办?
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-17 19:15:01 | 显示全部楼层
应该有相关的API楼主可以查查。。。
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-8-19 11:30:01 | 显示全部楼层
换个角度,直接修改注册表不是更好吗?不过应该修改那个注册表呢?
回复

使用道具 举报

0

主题

3

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-8-19 11:45:01 | 显示全部楼层
注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\Shares
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-8-19 12:00:01 | 显示全部楼层
下载个控件,啥都搞定了。 Sharing v3.0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表