gpt4 book ai didi

objective-c - 查找 Macintosh 文件的属性

转载 作者:太空宇宙 更新时间:2023-11-04 02:54:35 25 4
gpt4 key购买 nike

我将说明我的问题的用例。

我这里有两个文件,它们恰好是来自旧版 Mac OS 的 Finder 7.5.5Finder 8.1

如果我使用 Cmd + I 我会得到以下信息:

Version:
7.5.5, © Apple Computer, Inc. 1983-96
System 7.5 Version 7.5.3

Version:
8.1, Copyright Apple Computer, Inc. 1983-97
Mac OS 8.1

我想以编程方式提取这些信息。但是,我什至不确定它被保存在哪里。

在一个小型 Objective-C 项目(Foundation)中,我为 7.5 文件做了以下操作:

NSString      * finder7     = [[NSString alloc] initWithString:@"/Users/me/Desktop/Finder7"];
NSFileManager * fileManager = [NSFileManager defaultManager];
NSError * error = nil;
NSDictionary * attr = [fileManager attributesOfItemAtPath:finder7 error:&error];
NSLog(@"%@", attr);

这是输出:

2013-09-25 10:53:30.224 GetAttributes[1164:903] {
NSFileCreationDate = "1996-01-15 12:00:00 +0000";
NSFileExtensionHidden = 0;
NSFileGroupOwnerAccountID = 20;
NSFileGroupOwnerAccountName = staff;
NSFileHFSCreatorCode = 1296122707;
NSFileHFSTypeCode = 1179534418;
NSFileModificationDate = "1996-01-15 12:00:00 +0000";
NSFileOwnerAccountID = 501;
NSFileOwnerAccountName = me;
NSFilePosixPermissions = 493;
NSFileReferenceCount = 1;
NSFileSize = 0;
NSFileSystemFileNumber = 4384377;
NSFileSystemNumber = 234881026;
NSFileType = NSFileTypeRegular;
}

如您所见,没有提及版本或版权。我无法打开“应用程序的内容”,因为遗留应用程序显然没有它。

所以我想它可能是一个扩展属性,所以我得到了控制台并这样做了:

$ ls -l@
-rwxr-xr-x@ 1 me staff 0 15 Jan 1996 Finder7
com.apple.FinderInfo 32
com.apple.ResourceFork 503994
-rwxr-xr-x@ 1 me staff 3631000 16 Dec 1997 Finder8
com.apple.FinderInfo 32
com.apple.ResourceFork 502012
com.apple.metadata:kMDItemFinderComment 42

然后我在每个条目中找到了这些条目:

$ xattr -l com.apple.FinderInfo Finder7
(...)
00077AE0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00077AF0 00 00 32 07 55 80 00 00 00 05 37 2E 35 2E 35 25 |..2.U.....7.5.5%|
00077B00 37 2E 35 2E 35 2C 20 A9 20 41 70 70 6C 65 20 43 |7.5.5, . Apple C|
00077B10 6F 6D 70 75 74 65 72 2C 20 49 6E 63 2E 20 31 39 |omputer, Inc. 19|
00077B20 38 33 2D 39 36 00 00 00 2B 00 00 00 00 00 00 00 |83-96...+.......|
(...)

$ xattr -l com.apple.FinderInfo Finder8
(...)
00077330 06 46 69 6E 64 65 72 00 00 00 00 00 00 36 08 10 |.Finder......6..|
00077340 80 00 00 00 03 38 2E 31 2B 38 2E 31 2C 20 43 6F |.....8.1+8.1, Co|
00077350 70 79 72 69 67 68 74 20 41 70 70 6C 65 20 43 6F |pyright Apple Co|
00077360 6D 70 75 74 65 72 2C 20 49 6E 63 2E 20 31 39 38 |mputer, Inc. 198|
00077370 33 2D 39 37 00 00 00 26 01 08 10 80 00 06 46 69 |3-97...&......Fi|
00077380 6E 64 65 72 00 00 00 00 00 00 00 00 00 00 00 00 |nder............|
(...)

我从来没有真正使用过扩展属性,特别是在开发中。所以在这里我需要一些光。我看到版本号在不同的位置。我怎样才能像 OSX Finder 那样直接获取这些信息?我花了几分钟手动完成,但我仍然不清楚版本是如何存储的。我是否可以在其他地方找到这些信息,或者我的方向是否正确?

是否有 Objective-C 或 C 解决方案可以做到这一点,所以我不需要重新发明轮子?

感谢您的帮助!

File information windows

我也试过检查 rsrc。在版本号前找到一个彩蛋。

enter image description here

最佳答案

信息存储在扩展属性 com.apple.ResourceFork 中。您可以使用类似 DeRez 的工具反编译信息。

如果您想以编程方式访问资源分支,则有 Resource Manager API,但 10.8 中几乎所有内容都已弃用。版本信息的资源类型是 'vers' 资源。

关于objective-c - 查找 Macintosh 文件的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19001993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com