3

我正在尝试以编程方式挂载一些 WebDAV 和 SMB 共享,并且我想为卷指定默认名称以外的特定名称。例如,如果我安装

https://my.sharepoint.school.edu/personal/grigutis

我希望它在 Finder 中显示为

/Volumes/My SharePoint Site

~/Desktop/My SharePoint Site

代替

/Volumes/grigutis

~/Desktop/grigutis

我可以用 mount_webdav 命令做到这一点:

$ mkdir /Volumes/My\ SharePoint\ Site
$ mount_webdav -s -i https://my.sharepoint.school.edu/personal/grigutis /Volumes/My\ SharePoint\ Site
or
$ mkdir ~/Desktop/My\ SharePoint\ Site
$ mount_webdav -s -i https://my.sharepoint.school.edu/personal/grigutis ~/Desktop/My\ SharePoint\ Site

但我无法使用 NetFSMountURLSync 进行此操作(假设我已经创建了目录):

NSURL *url = [NSURL URLWithString:@"https://my.sharepoint.school.edu/personal/grigutis"];

NSURL *mountpath = [NSURL fileURLWithPath:@"/Volumes/My SharePoint Site" isDirectory:YES];
or
NSURL *mountpath = [NSURL fileURLWithPath:[@"~/Desktop/My SharePoint Site" stringByExpandingTildeInPath] isDirectory:YES];

CFArrayRef mountpoints = NULL;
int result = 0;
result = NetFSMountURLSync((__bridge CFURLRef)url,
    (__bridge CFURLRef)mountpath,
    CFSTR("Kerberos"),
    CFSTR("NoPassword"),
    NULL,
    NULL,
    &mountpoints);

如果我尝试安装到 /Volumes/My SharePoint Site,我会看到 Finder 对话框:

'连接到服务器“my.sharepoint.school.edu”时出现问题。您没有访问此服务器的权限。

并且函数返回结果 13(权限被拒绝)。

如果我尝试安装到 ~/Desktop/My SharePoint Site,那么它会像这样安装

~/桌面/我的 SharePoint 站点/grigutis

这不是我想要的。我已经提交了一个关于这个的错误报告。有任何想法吗?如果可能的话,我想避免使用 NSTask 。

4

2 回答 2

4

预先创建挂载点,并kNetFSMountAtMountDirKey在挂载选项中启用:

CFMutableDictionaryRef mountOpts = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CFDictionarySetValue(mountOpts, kNetFSMountAtMountDirKey, CFSTR("true"));
int ret = NetFSMountURLSync(
    (__bridge CFURLRef) url,
    (__bridge CFURLRef) mountPath,
    NULL,
    NULL,
    0,
    mountOpts,
    &mountPoints
);
于 2014-09-23T20:03:48.443 回答
0

作为答案:

另外,你从哪里得知错误代码的含义?” –马特 2014 年 8 月 13 日 21:15

可以从文件中读取错误代码:/usr/include/sys/errno.h

即,如果您打开终端并运行以下命令:

$ cat /usr/include/sys/errno.h | less

这将输出 errno.h 文件并将其发送到 less 以便您可以使用 pgup 和 pgdwn 键导航结果。

于 2016-02-11T08:13:54.003 回答