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

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

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

【问题讨论】:

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

标签: macos cocoa finder osxfuse


【解决方案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年前问的,没看到
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 2019-12-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
相关资源
最近更新 更多