2013-02-13 40 views
1

給定一個音量,我如何確定它是否被加密?我發現了像DADiskCopyDescription()和NSURL的getResourceValue:forKey:error:這些信息提供了豐富的信息,而不是卷是否加密。如何以編程方式確定磁盤是否在OS X上加密?

即使沒有公共API,那麼從OS隨附的命令行工具刮取輸出也是可以接受的。我發現最近的是'diskutil info/dev/disk0',但是又沒有加密信息。煩人的是,當您點擊藍色信息按鈕時,GUI Disk Utility應用程序確實提供了這些信息。

回答

1

你可以(ab)爲此使用IOKit。請注意,CoreStorage加密的屬性沒有在任何地方正式定義,所以這個決不是公共API。此外,您需要檢查覈心存儲爲操作系統提供的整個磁盤對象(例如,磁盤1),而不是核心存儲器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); 
+0

感謝 - 作品像魅力! – 2013-02-14 13:47:44

0

看起來這個信息是可用的system_profiler -detailLevel basic

相關問題