【问题标题】:Must Windows system locale be system wide?Windows 系统区域设置必须是系统范围的吗?
【发布时间】:2011-08-04 08:48:56
【问题描述】:

大家好。 Windows 系统区域设置(或者说,系统代码页、1252、936、950 等)必须是系统范围的吗?要知道,在 Windows 2000 ~ Windows 7 中,在控制面板中更改系统代码页需要重新启动才能生效。

我想知道我是否可以进行每个登录会话的区域设置,甚至是每个进程的区域设置?这将简化在不同语言环境下运行的调试程序。

顺便说一句:我找到了 GetCPInfo() Win32 API,但没有对应的 SetCPInfo,唉。

【问题讨论】:

    标签: winapi locale codepages


    【解决方案1】:

    是的,系统区域设置是整个系统,但用户和进程/线程可以更改自己的区域设置。 可以使用SetThreadLocale() 设置线程本地。 其他任何事情都不会在您的程序范围内进行更改。

    【讨论】:

    • 谢谢。我仍然很好奇为什么微软做出这样的决定,不允许基于进程或登录会话更改系统区域设置。能多解释一下吗?
    • 因为它是一个用户设置,而不是让您的应用程序更改。如果你想改变它,它是如上所述的线程特定的。
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2014-11-12
    • 2012-04-30
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多