获取所有可引导驱动器mac的列表

时间:2014-12-22 06:41:29

标签: objective-c macos swift

我目前正在寻找一种获取Mac上所有可启动分区列表的方法吗?

我知道你可以获得所有卷的清单吗?但我不知道如何检查每个特定卷是否可引导?

有没有办法使用 swift 目标c 执行此操作?

2 个答案:

答案 0 :(得分:0)

使用objective-c或swift可能没有,但你可以从你的objective-c应用程序运行一个苹果脚本(终端命令)(在OS X上,我不知道它是否可以在iOS上完成) 这就是你执行苹果脚本的方式:

//Begin of the script
NSAppleScript *script = [[NSAppleScript alloc]
                              initWithSource:@"Tell application \"Terminal\" \n\
                              do shell script \" some script here \"\n\
                              end tell"];
NSDictionary *errors = nil;
NSAppleEventDescriptor *result = [script executeAndReturnError:&errors];
NSLog(@"result: %@", result);
NSLog(@"errors: %@", errors);
if(errors==NULL){

    NSLog(@"Succeeded");

}
else{  

    NSLog(@"Failed");    
}
//End of the script

答案 1 :(得分:0)

执行此操作的快速而肮脏的方法是发出bless --infosystemsetup liststartupdisks命令。您可以指定希望以plist格式输出,以便更容易解析。

就执行这些命令而言,典型的NSTask应该有效。您也可以使用system(),但它并不是OS X上的标准做法,因为NSTask有很多优点。

执行此操作的纯代码方法是获取磁盘列表,然后查看每个磁盘列表以查找使OS X可引导的已知文件。例如/ System / Library / CoreServices中的boot.efi文件,mach内核文件以及/System/Library/CoreServices/SystemVersion.plist的内容。