【问题标题】:How could programmatically Set OS Measurement system to metric? [closed]如何以编程方式将操作系统测量系统设置为公制? [关闭]
【发布时间】:2018-02-25 21:55:48
【问题描述】:

我想检查操作系统的当前测量单位,然后将其设置为 Metrics。

提前致谢!

更新:

我在 c# 中使用了以下代码: Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\International", "iMeasuere", "0"); 当我通过 regedit 检查时它会设置注册表值,但是当我返回操作系统中的区域和语言设置面板时,我看到 Units 系统仍然是美国,之后注册表项重置为“1”

【问题讨论】:

  • 告诉我们您的进展情况

标签: c# units-of-measurement


【解决方案1】:

我认为此信息存储在注册表中,并且您在以后会找到包含该信息的所有其他对象都是只读的。 请参阅此similar question 的答案,它会更改注册表上的信息。请注意,这可能会因 Windows 版本而异,有些可能需要用户注销。

另一方面,我认为强制应用程序以特定度量单位显示幅度并不是一个好主意。理论上,用户在设置上选择了他喜欢的单位系统。做到这一点的“好方法”是计算您选择的单位所需的一切,但将其呈现给用户选择的单位。只是一个想法。

【讨论】:

    【解决方案2】:

    Computer\HKEY_CURRENT_USER\Control Panel\International\iMeasure 注册表值包含当前登录的度量单位区域设置,1 代表美国,0 代表度量。您可以使用Registry.SetValue 修改它(您的应用程序可能需要start as Administrator)虽然我强烈建议您的应用程序不应该自动执行此操作,但您应该询问用户是否真的想要这样做,因为它会影响其他应用程序。

    【讨论】:

    • 谢谢大家,它解决了我的问题。
    • 我使用了以下代码:Registry.SetValue(@"HKEY_CURRENT_USER\Control Panel\International", "iMeasuere", "0");当我通过 regedit 检查时它会设置注册表值,但是当我返回操作系统中的区域和语言设置面板时,我看到单位系统是美国,之后注册表项重置为“1”
    • @Arash 无法在此处使用最新的 Windows 10、VS 2017 和 C# 控制台应用程序复制它。您是否以管理员身份运行 VS(如果正在调试)和应用程序?在另一台干净的 PC 上尝试。组策略或其他应用程序可能会干扰设置。
    猜你喜欢
    • 2012-10-19
    • 2011-10-31
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多