3

私はMacOS用のアプリケーションを開発しています。このアプリケーションは、ネットワーク管理者が対話型ユーザーに、ソフトウェアの展開後に実行するアクション(今すぐ再起動、後で再起動などのアクション)を選択するように求めるために使用されます。ダイアログはrootアカウントからリモートで(SSH接続を介して)開始されます。ダイアログGUIを初期化するためのローカリゼーション情報を含むxmlファイルがあります。このためには、ユーザーの最優先言語が必要ですが、

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

戻り値

(es、en、de)アプリがインタラクティブユーザーから起動されたとき

(en)rootアカウントからリモートで開始された場合

ユーザーの名前を取得するために、bashコマンド'stat -f \%Su / dev / console'を使用していますが、この特定のユーザーの設定を取得する方法が見つかりません。

前もって感謝します!

4

1 に答える 1

2

[ユーザー] ホーム ディレクトリの Library/Preferences/ フォルダーにある設定リスト .GlobalPreferences.plist には、[ユーザー] の優先言語が含まれています。デフォルトのホーム ディレクトリは /Users/[ユーザー] であり、ユーザーは root パスは /var/root/ ですが、このパスは構成できます。ここでは、-(NSString *)stringByExpandingTildeInPathNSString 形式のメソッドを使用してホーム ディレクトリを取得できます。以下は、この情報を取得するためのコードです。

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"];

ここで、[self getInteractiveUser]「stat -f\%Su /dev/console」コマンドを使用して対話ユーザーを返します。

ヒョウとライオンで動作します。

于 2012-10-30T13:04:40.723 に答える