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?
MAC OS 10.15 挂载ntfs文件系统并设置自动挂载RW模式.