如何以编程方式访问 Windows 计算机的区域?

如何以编程方式访问 Windows 计算机的区域?

如何以编程方式访问 Windows 计算机的区域?

具体来说,我在 Windows 10 的区域和语言设置面板中寻找这个值。

Windows 10 区域

或者(交替),控制面板 -> 区域 -> 位置选项卡中的“主位置”。

Windows 控制面板位置

我希望找到适用于 Windows 7-10 的东西。还要注意我选择的默认语言是英语(美国)。我尝试过注销并重新启动计算机以应用所有更改。我尝试过以下命令(来自 powershell):

wmic os get locale
// 0409 -> Translates to United States
// This one is especially problematic - 
// it doesn't seem to change
// when I change my default language.

Get-Culture
// 1033 -> English (United States)

Get-UICulture
// 1033 -> English (United States)

我会比较喜欢不是如果可能的话,最好依赖于操作系统所选的语言。非 powershell 解决方案也很好,因为我不确定是否可以依赖于在最终用户的机器上可执行的 powershell 脚本。


编辑: Stack Overflow 上的这个答案对我有用"Canada",并按预期报告(或者"CA",如果我使用 GeoType 4,这才是我真正想要的)。我没有使用 C Sharp(或任何可以kernel32.dll直接交互的东西),所以如果有人知道在哪里可以获取这些信息,我还是会很感激。但如果有必要,我可以编写一个 .NET Core 应用程序来帮我获取它。

答案1

Windows 区域设置似乎按用户存储在注册表中: HKEY_CURRENT_USER:\Control Panel\International\Geo\。如果您最终使用 Powershell 来检索此值,则可以使用以下方法进行操作:

gp 'HKCU:\Control Panel\International\Geo\' | select -exp Name

以美国为例:

地区 CA 区域 CA PS

CA 示例:

地区 美国 地区 美国 PS

答案2

如何获取 Windows 主页位置?

使用Get-WinHomeLocation

Get- WinHomeLocationcmdlet 获取用户 GeoID 设置的值并返回 .NETGeoID对象。Windows GeoID 设置是描述当前用户帐户家庭位置的用户设置。家庭位置是国家或地区。需要当前用户帐户家庭位置的应用程序(例如电视调谐器应用程序的驱动程序)可以使用此设置。

有关 GeoID 的表格,请参阅地理位置表

例子

示例 1:显示当前帐户的 GeoID

PS C:\> Get-WinHomeLocation
HomeLocation     Description
----             -----------
244              United States

此命令返回当前用户帐户的 GeoID 设置及其显示名称。

来源获取 WinHomeLocation

答案3

systeminfo | findstr “Locale” | find "System" | cut -f2 -d( | sed s/)//g

依赖于 GNU 文本实用程序cutsed因为 Windows 没有现成的文本过滤功能。它们的 Win32 二进制文件可以从以下位置下载:http://gnuwin32.sourceforge.net/packages/coreutils.htm并复制到机器的路径中,或者复制到您将执行命令的目录中。

系统信息是 Windows 的一部分,用于提取有关您的配置和硬件的信息。我们获取其输出并使用以下方式进行过滤:查找字符串,另一个 Window 可执行文件,只显示带有“locale”的行,然后使用寻找,另一个 Windows 可执行文件,用于过滤剩余的行以仅显示那些也包含“System”的行。然后我们使用丢弃包括“(”在内的所有内容,以及sed通过丢弃右括号字符“)”来完成工作。

它不是 Powershell,虽然它确实依赖于两个外部二进制文件,但它们是良性的并且很小(39KB 和 79KB)。

相关内容