如何使用NetShareDelEx

问题描述 投票:0回答:1

我正在尝试使用

NetShareDelEx
,但收到错误 124,即
ERROR_INVALID_LEVEL

出于测试目的,我首先添加了与

NetShareAdd
的共享,这是成功的。然后我尝试将其删除。我的代码是:

LPCWSTR sharePath = L"C:\\SharedFolderEx";
SHARE_INFO_2 shareInfo;
ZeroMemory(&shareInfo, sizeof(SHARE_INFO_2));
shareInfo.shi2_netname = L"SharedFolderEx";
shareInfo.shi2_type = STYPE_DISKTREE;
shareInfo.shi2_remark = L"Shared Folder for testing";
shareInfo.shi2_permissions = ACCESS_READ | ACCESS_WRITE | ACCESS_DELETE;
shareInfo.shi2_max_uses = -1;
shareInfo.shi2_path = (LPWSTR)sharePath;
shareInfo.shi2_passwd = NULL;

DWORD parmErr;
DWORD status = NetShareAdd(NULL, 2, (LPBYTE)&shareInfo, &parmErr);

if(status != NERR_Success && status != NERR_DuplicateShare) {
    printf("NetShareAdd failed, Error code: %d\n", status);
    return;
}

status = NetShareDelEx(NULL, 2, (LPBYTE)&shareInfo);

if(status != NERR_Success) {
    printf("NetShareDelEx failed, Error code: %d\n", status);
    return;
}

我还尝试使用

NetShareDelEx
SHARE_INFO_0
进行
SHARE_INFO_1
调用,但得到了相同的错误代码 (124)。如果我使用
NetShareDel
NetShareDelSticky
没有问题,但我需要使用
NetShareDelEx

我做错了什么?

c winapi share
1个回答
0
投票

根据文档:NetShareDelEx 函数

如果 level 参数指定为 0、1、2 或 502,则 buf 参数指向 SHARE_INFO_0、SHARE_INFO_1、SHARE_INFO_2 或 SHARE_INFO_502结构体,以及shi0_netname、shi1_netname、 使用该结构的 shi2_netname 或 shi502_netname 成员;这 其他成员将被忽略。

我建议你可以尝试只使用

shi2_netname
并忽略其他成员。

© www.soinside.com 2019 - 2024. All rights reserved.