NetShareSetInfo 函数 (lmshare.h)

设置共享资源的参数。

语法

NET_API_STATUS NET_API_FUNCTION NetShareSetInfo(
  [in]  LMSTR   servername,
  [in]  LMSTR   netname,
  [in]  DWORD   level,
  [in]  LPBYTE  buf,
  [out] LPDWORD parm_err
);

parameters

[in] servername

指向字符串的指针,该字符串指定要对其执行函数的远程服务器的 DNS 或 NetBIOS 名称。 如果此参数为 NULL,则使用本地计算机。

[in] netname

指向一个字符串的指针,该字符串指定要设置其信息的共享的名称。

[in] level

指定数据的信息级别。 此参数的取值可为下列值之一:

含义
1
指定有关共享资源的信息,包括资源的名称和类型以及与资源关联的注释。 buf 参数指向SHARE_INFO_1结构。
2
指定有关共享资源的信息,包括资源的名称、类型和权限、密码以及连接数。 buf 参数指向SHARE_INFO_2结构。
502
指定有关共享资源的信息,包括资源的名称和类型、所需权限、连接数和其他相关信息。 buf 参数指向SHARE_INFO_502结构。
503
指定共享资源的名称。 buf 参数指向SHARE_INFO_503结构。 NetShareSetInfo 函数会忽略此结构的所有成员(shi503_servername除外)。

Windows Server 2003 和 Windows XP: 不支持此信息级别。

1004
指定与共享资源关联的注释。 buf 参数指向SHARE_INFO_1004结构。
1005
指定一组描述共享资源的标志。 buf 参数指向SHARE_INFO_1005结构。
1006
指定共享资源可以容纳的最大并发连接数。 buf 参数指向SHARE_INFO_1006结构。
1501
指定与指定共享关联的 SECURITY_DESCRIPTORbuf 参数指向SHARE_INFO_1501结构。

[in] buf

指向指定数据的缓冲区的指针。 此数据的格式取决于 级别 参数的值。 有关详细信息,请参阅 网络管理功能缓冲区

[out] parm_err

指向一个值的指针,该值接收导致 ERROR_INVALID_PARAMETER 错误的共享信息结构第一个成员的索引。 如果此参数为 NULL,则错误时不会返回索引。 有关更多信息,请参见下面的“备注”部分。

返回值

如果函数成功,则返回值 NERR_Success

如果函数失败,则返回值可能是以下错误代码之一。

返回代码 说明
ERROR_ACCESS_DENIED
用户无权访问请求的信息。
ERROR_INVALID_LEVEL
级别 参数指定的值无效。
ERROR_INVALID_PARAMETER
指定的参数无效。 有关更多信息,请参见下面的“备注”部分。
NERR_NetNameNotFound
共享名称不存在。

注解

此函数仅适用于服务器消息块 (SMB) 共享。 对于其他类型的共享(例如分布式文件系统 (DFS) 或 WebDAV 共享),请使用支持所有类型的共享的 Windows 网络 (WNet) 函数

只有管理员或 Power Users 本地组的成员,或者具有 Print 或 Server Operator 组成员身份的成员,才能成功执行 NetShareSetInfo 函数。 打印操作员只能设置有关打印机共享的信息。

如果 NetShareSetInfo 函数返回 ERROR_INVALID_PARAMETER,则可以使用 parm_err 参数来指示共享信息结构的第一个无效成员。 (共享信息结构以 SHARE_INFO_ 开头,其格式由 级别 参数指定。) 下表列出了可在 parm_err 参数中返回的值以及出错的相应结构成员。 (前缀 shi* 指示成员可以以多个前缀开头,例如 shi2shi502_.)

成员
SHARE_NETNAME_PARMNUM shi*_netname
SHARE_TYPE_PARMNUM shi*_type
SHARE_REMARK_PARMNUM shi*_remark
SHARE_PERMISSIONS_PARMNUM shi*_permissions
SHARE_MAX_USES_PARMNUM shi*_max_uses
SHARE_CURRENT_USES_PARMNUM shi*_current_uses
SHARE_PATH_PARMNUM shi*_path
SHARE_PASSWD_PARMNUM shi*_passwd
SHARE_FILE_SD_PARMNUM shi*_security_descriptor
 

如果要为 Active Directory 编程,则可以调用某些 Active Directory 服务接口 (ADSI) 方法,以实现通过调用网络管理共享函数可实现的相同功能。 有关详细信息,请参阅 IADsFileShare

如果为级别参数指定了 503,则SHARE_INFO_503结构的 shi503_servername 成员中指定的远程服务器必须已使用 NetServerTransportAddEx 函数绑定到传输协议。 在调用 NetServerTransportAddEx 时,必须为 级别 参数指定 2 或 3,并且 必须在 传输协议的 SERVER_TRANSPORT_INFO_2 结构中指定 SVTI2_SCOPED_NAME 标志。

示例

以下代码示例演示如何使用对 NetShareSetInfo 函数的调用来设置与共享资源关联的注释。 为此,此示例指定信息级别 1004 (SHARE_INFO_1004) 。

#ifndef UNICODE
#define UNICODE
#endif
#include <windows.h>
#include <stdio.h>
#include <lm.h>
#pragma comment(lib, "Netapi32.lib")

void wmain( int argc, TCHAR *argv[ ])
{
   SHARE_INFO_1004 p;
   NET_API_STATUS res;
   DWORD parm_err = 0;

   if(argc<4)
      printf("Usage: SetInfo server share \"remark\"\n");
   else
   {
      //
      // Fill in SHARE_INFO_1004 structure member.
      //
      p.shi1004_remark=argv[3];
      //
      // Call the NetShareSetInfo function,
      //  specifying information level 1004.
      //
      res=NetShareSetInfo(argv[1], argv[2], 1004, (LPBYTE)&p, &parm_err);
      //
      // Display the result of the call.
      //
      if(res==0)
         printf("Remark set.\n");
      else
         printf("Error: %u\tparmerr=%u\n", res, parm_err);
   }
   return;
}

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 lmshare.h (包括 Lm.h)
Library Netapi32.lib
DLL Netapi32.dll

另请参阅

NetServerTransportAddEx

NetShareGetInfo

网络管理功能

网络管理概述

网络共享函数

SHARE_INFO_1

SHARE_INFO_1004

SHARE_INFO_1005

SHARE_INFO_1006

SHARE_INFO_1501

SHARE_INFO_2

SHARE_INFO_502

SHARE_INFO_503