Objective c 获取登录项目详细信息

Objective c 获取登录项目详细信息,objective-c,cocoa,Objective C,Cocoa,我正在尝试获取mac上登录项目的列表 UInt32 seed = 0U; LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL); NSArray *currentLoginItems = (__bridge NSArray *)(LSSharedFileListCopySnapshot(loginItems, &seed)); for(

我正在尝试获取mac上登录项目的列表

UInt32 seed = 0U;
LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);
NSArray *currentLoginItems = (__bridge NSArray *)(LSSharedFileListCopySnapshot(loginItems, &seed));
for(NSString *login in currentLoginItems){

const char *cString = [login UTF8String];
        NSLog(@"%s", Cstring);

}
我正在尝试解析此字符串以获取登录项名称。但对于“login”字符串上的任何操作,我都会得到如下错误:

[\uu NSCFType UTF8String]:发送到实例的选择器无法识别 0x6000000e9d00


我一直在使用LSSharedFileList库,我得到了这个函数,它可能会对您有所帮助

-(NSArray *)GetLoginItems{

  NSMutableArray *myStrings = [NSMutableArray array];
  CFStringRef LoginItemName = nil;

 // Get Login Items
  LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);

  if (loginItems) {

    NSArray *loginItemsArray = (__bridge NSArray *)LSSharedFileListCopySnapshot(loginItems, nil);

    for (int i = 0; i < [loginItemsArray count]; i++) {

        LSSharedFileListItemRef currentItemRef = (__bridge LSSharedFileListItemRef)[loginItemsArray objectAtIndex:i];

        // Gets Items Display Name
        LoginItemName = LSSharedFileListItemCopyDisplayName(currentItemRef);

        [myStrings addObject:(__bridge id _Nonnull)(LoginItemName)];
    }
  }

  CFRelease(loginItems);

  return myStrings;
}
-(NSArray*)GetLoginItems{
NSMutableArray*myStrings=[NSMutableArray];
CFStringRef LoginItemName=nil;
//获取登录项目
LSSharedFileListRef loginItems=LSSharedFileListCreate(NULL,kLSSharedFileListSessionLoginItems,NULL);
如果(登录){
NSArray*loginItemsArray=(uu桥NSArray*)LSSharedFileListCopySnapshot(loginItems,nil);
对于(int i=0;i<[loginItemsArray计数];i++){
LSSharedFileListItemRef currentItemRef=(u桥LSSharedFileListItemRef)[loginItemsArray对象索引:i];
//获取项目显示名称
LoginItemName=LSSharedFileListItemCopyDisplayName(currentItemRef);
[myStrings addObject:(u_桥id非空)(LoginItemName)];
}
}
CFRelease(loginItems);
返回我的字符串;
}
这是返回一个字符串数组,但您可以直接在控制台上打印它们。希望有帮助