以编程方式在非 Windows 计算机中创建共享文件夹

Creating a shared folder in a non-windows machine programmatically

本文关键字:创建 共享 共享文件 文件夹 计算机 Windows 编程 方式      更新时间:2023-10-16

我正在尝试使用NetShareAdd() Windows API函数在Linux框中远程创建共享文件夹。我有一个使用 samba 共享的文件夹,我可以在那里远程创建目录;但是当我尝试在这样的机器中创建网络共享时,我总是ACCESS_DENIED。

你知道这是否可能吗?如果是,你对如何做到这一点有一些想法吗?

这是一个小测试:

int main()
{
    SHARE_INFO_2 sh;
    sh.shi2_netname = L"shr004x";
    sh.shi2_type = STYPE_DISKTREE;
    sh.shi2_remark = L"This is a shared test";
    sh.shi2_permissions = ACCESS_ALL;
    sh.shi2_max_uses = 17;
    sh.shi2_current_uses = 1;
    sh.shi2_path = L"/mnt/Storage/Test/test001"; //No matter what I put here, I always get access denied (5)
    sh.shi2_passwd = NULL;
    DWORD hr = ::NetShareAdd(L"172.16.212.40", 2, (LPBYTE) &sh, NULL);
    cout << hr << endl;
    getchar();
}

您需要将磁盘操作员权限 (SeDiskOperatorPrivilege) 和 Samba 配置为允许创建共享。

参见 smb.conf(5) 手册页 '添加共享命令' 选项说明。