我正在尝试获取 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”字符串上的任何操作,我都会收到如下错误:
[__NSCFType UTF8String]: unrecognized selector sent to instance 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;
}
这个返回一个字符串数组,但您可以直接在控制台上打印它们。希望对您有帮助!
关于objective-c - 获取登录项目详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24217805/