如何以编程方式访问 Windows 计算机的区域?
具体来说,我在 Windows 10 的区域和语言设置面板中寻找这个值。
或者(交替),控制面板 -> 区域 -> 位置选项卡中的“主位置”。
我希望找到适用于 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
答案2
如何获取 Windows 主页位置?
使用Get-WinHomeLocation
:
Get-
WinHomeLocation
cmdlet 获取用户 GeoID 设置的值并返回 .NETGeoID
对象。Windows GeoID 设置是描述当前用户帐户家庭位置的用户设置。家庭位置是国家或地区。需要当前用户帐户家庭位置的应用程序(例如电视调谐器应用程序的驱动程序)可以使用此设置。有关 GeoID 的表格,请参阅地理位置表。
例子
示例 1:显示当前帐户的 GeoID
PS C:\> Get-WinHomeLocation HomeLocation Description ---- ----------- 244 United States
此命令返回当前用户帐户的 GeoID 设置及其显示名称。
答案3
systeminfo | findstr “Locale” | find "System" | cut -f2 -d( | sed s/)//g
依赖于 GNU 文本实用程序cut
,sed
因为 Windows 没有现成的文本过滤功能。它们的 Win32 二进制文件可以从以下位置下载:http://gnuwin32.sourceforge.net/packages/coreutils.htm并复制到机器的路径中,或者复制到您将执行命令的目录中。
系统信息是 Windows 的一部分,用于提取有关您的配置和硬件的信息。我们获取其输出并使用以下方式进行过滤:查找字符串,另一个 Window 可执行文件,只显示带有“locale”的行,然后使用寻找,另一个 Windows 可执行文件,用于过滤剩余的行以仅显示那些也包含“System”的行。然后我们使用切丢弃包括“(”在内的所有内容,以及sed通过丢弃右括号字符“)”来完成工作。
它不是 Powershell,虽然它确实依赖于两个外部二进制文件,但它们是良性的并且很小(39KB 和 79KB)。