首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c# -如何获取CurrentUICulture会话

c# -如何获取CurrentUICulture会话
EN

Stack Overflow用户
提问于 2015-08-14 13:35:25
回答 2查看 974关注 0票数 0

我有一个C# (.NET 4) Windows作为LocalSystem运行。

它的一个功能是生成进程(也可以作为LocalSystem运行)。这些进程出现在给定会话的桌面上(如SessionID 1或SessionID 2、winlogon屏幕等)。

当以这种方式创建进程时,在进程中调用Thread.CurrentThread.CurrentUICulture总是返回'en-US',而不是返回给定会话的登录用户的区域性。

我需要一种方法来确定登录用户的区域性。我发现的最接近的东西是windows 'GetProcessPreferredUILanguages‘,我希望使用它来获取给定会话的“资源管理器”进程的语言,但我不清楚这是否是一个可行的选项。

如能提供任何协助,我们将不胜感激。提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-14 13:48:26

从来没有这样做过,但我很好奇,所以我做了一些谷歌。你可以试试GetUserDefaultUILanguage()

根据本文在MSDN中

当前的UI区域性是每个线程的属性.也就是说,每个线程都有自己的当前UI区域性。此属性等效于检索,或者从System.Threading.Thread.CurrentThread.CurrentUICulture Framework4.6开始设置分配给.NET属性的CultureInfo对象。启动线程时,其UI区域性最初确定如下:

  • 如果属性值不是null,则通过检索正在执行线程的应用程序域中的DefaultThreadCurrentUICulture属性指定的区域性。
  • 通过调用GetUserDefaultUILanguage函数.

还请注意这一点:

此函数只返回语言标识符。应用程序可以使用GetUserPreferredUILanguages函数检索语言名称。

票数 3
EN

Stack Overflow用户

发布于 2015-08-14 15:18:22

在GetUserDefaultUILanguage()块中调用WindowsIdentity.Impersonate()将返回正确的区域性信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32011432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档