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

Posted

技术标签:

【中文标题】OSXFUSE:不允许 Finder 下载文件来构建图标?【英文标题】:OSXFUSE : Do not allow Finder to download files to build icons? 【发布时间】:2014-11-06 14:08:08 【问题描述】:

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

有谁知道禁止 Finder 执行此操作的良好且可靠的编程方式(即在我的 Cocoa 应用程序中编码)? 基于构建 .DS_Store 文件的代码,或者基于 Finder 代码注入的代码也将是一个很好的解决方案。

【问题讨论】:

如果这仍然相关,请参阅:***.com/questions/31912769/… 我不建议在 OSX 未来的这一点上注入 其实我是用Finder代码注入做到的(应用程序的其他功能也需要它)。现在正在调查它是否适用于 El Capitan。 不幸的是,注入不适用于 El Capitan。如果您确实成功注入,我会很高兴知道如何:) 是的,似乎没有办法,除非寻找我不想使用的黑客/漏洞利用方式。因此,现在需要制作 Finder Sync 插件 + 检测快速查看读取请求,以禁用从云端下载所有数据。另一种可能的方法是使用 Apple Script,但我不喜欢它。 如何检测快速查看读取请求? 【参考方案1】:

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

Finder 应该有 bundle id "com.apple.finder"

但是,例如,如果您尝试在驱动器中存档某些内容,则 finder 将带有完全相同的包 ID。所以启用这样的过滤会破坏归档,可能还有其他问题。

BTW-“com.apple.appkit.xpc.openAndSavePanelService”打开和保存面板也会读取文件来构建图标。

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

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

【讨论】:

哦,2年前问的,没看到

以上是关于OSXFUSE:不允许 Finder 下载文件来构建图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cocoa 中构建 OSXFUSE.framework?

osxfuse:如何清理缓存?

MAC OS 10.15 挂载ntfs文件系统并设置自动挂载RW模式.

在 OSX 中报告不区分大小写(使用 OSXFuse)

Flutter Ios 上不允许使用资源分叉、Finder 信息或类似的碎屑

使用osxfuse开发无法为mac保存microsoft office2011文件