Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OSXFUSE:不允许Finder下载文件来构建图标?_Macos_Cocoa_Finder_Osxfuse - Fatal编程技术网

Macos OSXFUSE:不允许Finder下载文件来构建图标?

Macos OSXFUSE:不允许Finder下载文件来构建图标?,macos,cocoa,finder,osxfuse,Macos,Cocoa,Finder,Osxfuse,我正在OSX FUSE之上构建定制的基于云的存储访问解决方案。 一切正常,但Finder有一个问题,它试图下载文件夹中的所有文件来构建文件图标 有人知道一种好的、可靠的编程方法(即在我的Cocoa应用程序中编码)来禁止Finder这样做吗? 基于building.DS_Store文件的代码,或者基于Finder代码注入的代码也将是一个很好的解决方案。有一种方法可以过滤掉Finder回调。您可以从任何FUSE委托回调获取上下文。从该上下文中,您可以获得应用程序包id,该id可用于过滤来自finde

我正在OSX FUSE之上构建定制的基于云的存储访问解决方案。 一切正常,但Finder有一个问题,它试图下载文件夹中的所有文件来构建文件图标

有人知道一种好的、可靠的编程方法(即在我的Cocoa应用程序中编码)来禁止Finder这样做吗?
基于building.DS_Store文件的代码,或者基于Finder代码注入的代码也将是一个很好的解决方案。

有一种方法可以过滤掉Finder回调。您可以从任何FUSE委托回调获取上下文。从该上下文中,您可以获得应用程序包id,该id可用于过滤来自finder的调用

Finder应该有bundle id“com.apple.Finder”

但是,例如,如果您试图在驱动器中归档某些内容,finder将提供完全相同的bundle id。因此,启用此类筛选将破坏归档,可能还会破坏其他功能

顺便说一句——“com.apple.appkit.xpc.openAndSavePanelService”打开和保存面板也会读取文件来构建图标

NSDictionary *context = [GMUserFileSystem currentContext];
pid_t pid = [context[kGMUserFileSystemContextProcessIDKey] intValue];

NSRunningApplication *appFromPid = [NSRunningApplication runningApplicationWithProcessIdentifier:pid];
NSString *bundleId = appFromPid.bundleIdentifier;

如果这仍然是相关的,请参阅:在OSX Future的这一点上,我不建议使用注入。实际上,我是通过Finder代码注入实现的(应用程序的其他功能也需要注入)。现在调查它对El Capitan有效。不幸的是,注射对El Capitan无效。如果你真的成功注入,我很高兴知道如何:)是的,似乎没有办法,除非寻找黑客/漏洞,这不是我想使用的方式。所以现在需要让Finder Sync插件+检测快速查看读取请求,以禁止从云下载所有数据。另一种可能的方法是使用Apple脚本,但我不喜欢。你如何检测快速查看读取请求?哦,两年前有人问过,没有看到吗