2014-03-07 32 views
0

我想從mac中的守護進程讀取當前用戶語言(首選語言)和區域。 我試過下面的代碼。在用戶空間進程中運行這段代碼時它工作正常,但它會在root/daemon進程中運行這段代碼時返回「en」和「us」。在mac中獲取daemon/root進程中當前用戶語言和區域的最佳方式是什麼?

CFLocaleRef loc = CFLocaleCopyCurrent(); 
CFStringRef countryCode = (CFStringRef)CFLocaleGetValue (loc, kCFLocaleCountryCode); 
CFShow(countryCode); 

CFArrayRef langs = CFLocaleCopyPreferredLanguages(); 
CFStringRef langCode = (CFStringRef)CFArrayGetValueAtIndex (langs, 0); 
CFStringRef langName = CFLocaleCopyDisplayNameForPropertyValue (loc, kCFLocaleLanguageCode, langCode); 
CFShow(langCode); 

在mac中獲取daemon/root進程中當前用戶語言和區域的最佳方式是什麼?

任何幫助appriciated ....在此先感謝....

回答

0

好,如果你使用NSLocale你有+(ID)systemLocale 它保證下,有一組鍵,其中currentLocale是不是如果你以root身份運行......我希望他們是您正在尋找的關鍵。

+0

感謝您的回覆。但是這並不能解決我的問題。我想要的是識別用戶區域設置的根進程。 – user2090422

+0

你將不得不改變有效的uid ...你可以在一個以用戶身份運行的幫助工具(正常場景的反向)中做到這一點 –

+0

再次感謝您的回覆。你能否爲同樣的內容添加一些示例代碼... – user2090422

相關問題