Comment puis-je accéder par programme à la région d'un ordinateur Windows?
Plus précisément, je recherche cette valeur dans la région & amp; Panneau des paramètres de langue dans Windows 10.
Ou (alternativement), le "domicile" dans le Panneau de configuration - & gt; Région - & gt; Onglet Emplacement.
J'espère trouver quelque chose qui fonctionnera pour Windows 7-10. Notant également que ma sélection par défaut la langue est anglais (États-Unis). J'ai essayé à la fois de déconnecter et de redémarrer mon ordinateur pour que les modifications éventuelles soient appliquées. J'ai essayé les commandes suivantes (de 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)
je préférerais ne pas compter sur la langue choisie par le système d'exploitation, dans la mesure du possible. Une solution non-PowerShell serait également intéressante, car je ne suis pas sûr de pouvoir compter sur des scripts PowerShell exécutables sur les machines de l'utilisateur final.
Modifier: Cette réponse sur Stack Overflow fonctionne pour moi et des rapports "Canada"
comme prévu (ou "CA"
, si j’utilise un GeoType de 4, c’est ce que je recherche réellement). Je n'utilise pas C Sharp (ou tout ce qui pourrait interagir avec kernel32.dll
directement, donc si quelqu'un sait où obtenir cette information ailleurs, ce serait tout de même apprécié. Mais je peux écrire une application .NET Core qui la saisit pour moi, si nécessaire.
la source
Get-WinHomeLocation
semble très utile aussi.Comment puis-je obtenir l'emplacement de la maison Windows?
Utilisation
Get-WinHomeLocation
:La source Get-WinHomeLocation
la source
s'appuie sur les utilitaires de texte GNU
cut
etsed
étant donné que Windows ne dispose pas de la capacité de filtrage de texte nécessaire à l’origine. Leurs fichiers binaires Win32 peuvent être téléchargés à partir de http://gnuwin32.sourceforge.net/packages/coreutils.htm et copié dans le chemin de la machine ou dans le répertoire où vous allez exécuter la commande.information système est une partie de Windows qui extrait des informations sur votre configuration et votre matériel. Nous prenons sa sortie et le filtrons avec findstr , un autre exécutable de Window, pour afficher uniquement les lignes avec "locale", utilisez ensuite trouver , encore un autre exécutable Windows, pour filtrer les lignes restantes afin d’afficher uniquement celles qui incluent également "Système". Ensuite, nous utilisons Couper tout jeter jusqu’à "(", et sed termine le travail en jetant le caractère de parenthèse proche ")".
Ce n'est pas Powershell, et bien que cela dépende de deux binaires étrangers, ils sont bénins et petits (39 Ko et 79 Ko).
la source
en-us;English (United States)
rapporté pour les deuxSystem Locale
etInput Locale
, il semble donc que cela peut encore correspondre à la langue?United States
.United States
, quand ma machine est réglée surCanada
. Je soupçonne que cela tire les États-Unis de mon choix par défaut la langue (qui est en effeten-US
). J'étais juste curieux de savoir s'il y avait un moyen d'obtenir la région sélectionnée dans les captures d'écran ci-dessus. On dirait qu'il y a un moyen de l'obtenir en interfaçant aveckernel32.dll
, mais je n’ai pas accès à cela dans l’application que j’utilise, à moins d’écrire un fichier .exe séparé et d’interfacer avec cela.