Windowsコンピューターの領域にプログラムでアクセスするにはどうすればよいですか?
具体的には、Windows10の[地域と言語]設定パネルでこの値を探しています。
または(または)、[コントロールパネル]-> [地域]-> [場所]タブの[ホームの場所]。
私は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アプリケーションを作成できます。
使用する Get-WinHomeLocation
:
Get -
WinHomeLocation
コマンドレットは、ユーザーのGeoID設定の値を取得し、.NETGeoID
オブジェクトを返します。 Windows GeoID設定は、現在のユーザーアカウントのホームロケーションを説明するユーザー設定です。自宅の場所は国または地域です。テレビチューナーアプリケーションのドライバーなど、現在のユーザーアカウントのホームロケーションを必要とするアプリケーションは、この設定を使用できます。GeoIDの表については、 地理的位置の表 を参照してください。
例
例1:現在のアカウントのGeoIDを表示する
PS C:\> Get-WinHomeLocation HomeLocation Description ---- ----------- 244 United States
このコマンドは、現在のユーザーアカウントのGeoID設定とその表示名を返します。
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)。