1

ボリュームが暗号化されているかどうかを判断するにはどうすればよいですか? DADiskCopyDescription() や NSURL の getResourceValue:forKey:error: など、豊富な情報を提供するものを見つけましたが、ボリュームが暗号化されているかどうかはわかりません。

このためのパブリック API がなくても、OS に同梱されているコマンド ライン ツールから出力をスクレイピングすることは許容されます。私が見つけた最も近いものは「diskutil info /dev/disk0」でしたが、ここでも暗号化情報はありませんでした。厄介なことに、青い情報ボタンをクリックすると、GUI Disk Utility アプリがこの情報を提供します。

4

2 に答える 2

1

これにはIOKitを(乱用)使用できます。CoreStorage Encryptedプロパティはどこにも公式に定義されていないため、これは明らかにパブリックAPIではないことに注意してください。また、Core Storage LVが存在するパーティション(例:disk0s2)ではなく、Core StorageがOSに提供するディスクオブジェクト全体(例:disk1)を検査する必要があります。

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);
于 2013-02-13T16:54:22.870 に答える
0

この情報は を使用して入手できるようですsystem_profiler -detailLevel basic

于 2016-12-22T17:46:49.180 に答える