gpt4 book ai didi

macos - 如何以编程方式确定 OS X 上的磁盘是否已加密?

转载 作者:行者123 更新时间:2023-12-03 17:13:18 24 4
gpt4 key购买 nike

给定一个卷,如何确定它是否已加密?我发现像 DADiskCopyDescription() 和 NSURL 的 getResourceValue:forKey:error: 这样的东西提供了大量信息,但没有提供卷是否加密的信息。

即使没有可用的公共(public) API,从操作系统附带的命令行工具中抓取输出也是可以接受的。我发现的最接近的是“diskutil info/dev/disk0”,但同样没有加密信息。令人烦恼的是,当您单击蓝色信息按钮时,GUI 磁盘实用程序应用程序确实提供了此信息。

最佳答案

您可以(ab)使用 IOKit 来实现此目的。请注意,CoreStorage Encrypted 属性并未在任何地方正式定义,因此这绝对不是公共(public) API。此外,您还需要检查 Core Storage 向操作系统提供的整个磁盘对象(例如 disk1),而不是 Core Storage LV 所在的分区(例如 disk0s2)。

const char *bsdDisk = "disk1";

DASessionRef session = DASessionCreate(kCFAllocatorDefault);
DADiskRef disk = DADiskCreateFromBSDName(kCFAllocatorDefault, session, "disk1");

io_service_t diskService = DADiskCopyIOMedia(disk);
CFBooleanRef isEncrypted = IORegistryEntryCreateCFProperty(diskService,
CFSTR("CoreStorage Encrypted"),
kCFAllocatorDefault,
0);

fprintf(stdout,
"%s %s encrypted\n",
bsdDisk,
(CFBooleanGetValue(isEncrypted)) ? "is" : "is not");

CFRelease(isEncrypted);
IOObjectRelease(diskService);
CFRelease(disk);
CFRelease(session);

关于macos - 如何以编程方式确定 OS X 上的磁盘是否已加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14852298/

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