Objective c 获取登录项目详细信息
我正在尝试获取mac上登录项目的列表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(
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);
返回我的字符串;
}
这是返回一个字符串数组,但您可以直接在控制台上打印它们。希望有帮助