2015-09-29 2 views
0

Я просто новичок в программировании на Mac OS X, пожалуйста, будьте терпеливы со мной. Я пытаюсь сделать приложение какао, которое цель состоит в том, чтобы прочитать некоторые из файла Infos info.plist Kext, который полный путь /System/Library/Extensions/NVDAResman.kext/Contents/Info.plistКак читать информацию из файла/S/L/E kext info.plist?

ч.

#import <Cocoa/Cocoa.h> 

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (weak) IBOutlet NSTextField *nvidiaNameTextField; 

@end 

m.

#import "AppDelegate.h" 

@interface AppDelegate() 

@property (weak) IBOutlet NSWindow *window; 
@end 

@implementation AppDelegate 

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
    [self setnvidiaNameTextField]; 
} 

- (void)applicationWillTerminate:(NSNotification *)aNotification { 
    // Insert code here to tear down your application 
} 

// This will allow the application to quit instead of just closing the window 
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender 
{ 
    return YES; 
} 

// Find NVIDIA Kernel Extension Name 
-(void)setnvidiaNameTextField 
{ 
    NSString *nvidiaNameTextField = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleName"]; 
    self.nvidiaNameTextField.stringValue = [NSString stringWithFormat:@"%@", nvidiaNameTextField]; 
} 

@end 

это работает, но с моим файлом Info.plist моего проекта, и это не то, что я хочу.

Так что мой вопрос в том, как я могу прочитать Info.plist из NVDAResman.kext?

Спасибо заранее

PS: Я использую Xcode 7.1 бета (7B60)

ответ

0
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:@"/System/Library/Extensions/NVDAResman.kext/Contents/Info.plist"]; 

Пожалуйста, обратите внимание, что любой поиск с помощью "[NSBundle mainBundle]" будут результаты в рамках Вашего пакета прикладных программ (в структуре папки .app). Также, если вы планируете изолировать приложение, вышеуказанный код не будет работать, и нет решения для его работы с песочницей (безопасность платформы OS X).

+0

Благодарим вас за ответ, это было очень полезно! – fantomas

0

вот как я это сделал (благодаря xhruso00)

м.

// Find NVIDIA Kernel Extension Name 
-(void)setnvidiaVersionTextField 
{ 
    NSDictionary *infoDict = [[NSDictionary alloc] initWithContentsOfFile:@"/System/Library/Extensions/NVDAResman.kext/Contents/Info.plist"]; 
    NSString* nvidiaVersionTextField = [infoDict objectForKey:@"CFBundleName"]; 
    self.nvidiaVersionTextField.stringValue = [NSString stringWithFormat:@"%@", nvidiaVersionTextField]; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^