3

我正在为 Mac OS 开发一个应用程序,网络管理员使用它来提示交互式用户选择他想要在某些软件部署后执行的操作(例如现在重新启动、稍后重新启动等操作)。该对话框将从 root 帐户远程启动(通过 SSH 连接)。我有一个带有本地化信息的 xml 文件,我想从中初始化对话框 GUI,为此我需要用户最喜欢的语言,但是

[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]

返回

(es, en, de) 当应用程序从交互式用户启动时

(zh) 何时从 root 帐户远程启动

为了获取用户名,我使用 bash 命令 'stat -f\%Su /dev/console' 但我找不到如何获取该特定用户的首选项。

提前致谢!

4

1 回答 1

2

找到了一个“肮脏”的解决方案,位于 [user] 主目录的 Library/Preferences/ 文件夹中的首选项列表 .GlobalPreferences.plist 包含 [user] 的首选语言,默认主目录是 /Users/[user],如果用户是root 路径是/var/root/ 但是这个路径可以配置,这里方法-(NSString *)stringByExpandingTildeInPath形式NSString 可以用来获取主目录。波纹管是获取此信息的代码:

NSString *interactiveUser = [self getInteractiveUser];
NSString *path = [NSString stringWithFormat: @"~%@/Library/Preferences/.GlobalPreferences.plist", interactiveUser];
path = [path stringByExpandingTildeInPath];
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];
NSArray *languages = [dict objectForKey:@"AppleLanguages"];

where[self getInteractiveUser]使用 'stat -f\%Su /dev/console' 命令返回交互式用户。

适用于豹和狮子。

于 2012-10-30T13:04:40.723 回答