web-dev-qa-db-ja.com

Windowsコンピューターの領域にプログラムでアクセスするにはどうすればよいですか?

Windowsコンピューターの領域にプログラムでアクセスするにはどうすればよいですか?

具体的には、Windows10の[地域と言語]設定パネルでこの値を探しています。

Windows 10 Region

または(または)、[コントロールパネル]-> [地域]-> [場所]タブの[ホームの場所]。

Windows Control Panel Location

私はWindows7-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"を報告します(またはGeoTypeを使用している場合は"CA" 4の、それは私が実際に求めているものです)。私はCSharp(またはkernel32.dllと直接インターフェースできるもの)を使用していないので、他の場所でその情報をどこで入手できるかを誰かが知っていれば、それでもありがたいです。ただし、必要に応じて、それを取得する.NETCoreアプリケーションを作成できます。

4
dvlsg

Windowsリージョンの設定は、ユーザーごとに、次のレジストリに保存されているようです。HKEY_CURRENT_USER:\Control Panel\International\Geo\。 Powershellを使用してこの値を取得した場合は、次の方法で取得できます。

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

米国の例:

Region CARegion CA PS

CAの例:

Region USRegion US PS

1
root

Windowsのホームロケーションを取得するにはどうすればよいですか?

使用する Get-WinHomeLocation

Get -WinHomeLocationコマンドレットは、ユーザーのGeoID設定の値を取得し、.NET GeoIDオブジェクトを返します。 Windows GeoID設定は、現在のユーザーアカウントのホームロケーションを説明するユーザー設定です。自宅の場所は国または地域です。テレビチューナーアプリケーションのドライバーなど、現在のユーザーアカウントのホームロケーションを必要とするアプリケーションは、この設定を使用できます。

GeoIDの表については、 地理的位置の表 を参照してください。

例1:現在のアカウントのGeoIDを表示する

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

このコマンドは、現在のユーザーアカウントのGeoID設定とその表示名を返します。

ソース Get-WinHomeLocation

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

windowsにはすぐに必要なテキストフィルタリング機能がないため、GNUテキストユーティリティcutおよびsedに依存しています。Win32バイナリはからダウンロードできます。 http://gnuwin32.sourceforge.net/packages/coreutils.htm マシンのパス、またはコマンドを実行するディレクトリにコピーされます。

systeminfo は、構成とハードウェアに関する情報を抽出するWindowsの一部です。その出力を取得し、別のWindows実行可能ファイルである findstr でフィルタリングして、「locale」の行のみを表示します。次に、さらに別のWindows実行可能ファイルである find を使用してフィルタリングします。残りの行は、「システム」も含むもののみを示しています。次に、 cut を使用して、「(」までのすべてを破棄し、 sed は、閉じ括弧文字「)」を破棄してジョブを終了します。

これはPowershellではなく、2つの外国のバイナリに依存しますが、それらは良性で小さい(39KBと79KB)。

1
K7AAY