c ++ - Få sprog i Windows Startup Messages

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger nu for at få mit hoved omkring MUI og få nogle problemer med GetSystemDefaultUILanguage - det returnerer ikke det sprog, jeg forventer:


Velkomstskærm og ny brugerkonto indstillingsdialog


Brugere kan indstille det sprog, der bruges til Windows-opstartsmeddelelser i dialogboksen 'Velkomstskærm og ny brugerkonto' - som hævder at kopiere sprogindstillinger til systemkonti. Jeg forventer derfor at kunne få sproget, der bruges ved opstartsmeddelelser, ved hjælp af GetSystemDefaultUILanguage - men det ser ud til, at det kun kommer til at komme tilbage med det sprog, der tidligere blev installeret til operativsystemet. Hvordan kan jeg få startproget sprog?

Bedste reference


Det ser ud til, at GetSystemDefaultUILanguage returnerer det sprog, som operativsystemet oprindeligt var installeret med. I mindst 2K8 R2 (og sandsynligvis andre post-Vista OS'er) kan brugerne ændre det sprog, der bruges til opstart af meddelelser - men det er desværre ikke afspejlet gennem GetSystemDefaultUILanguage.


Det kan dog opsiges via registreringsdatabasen. Den følgende værdi lagrer en tekstbeskrivelse (for eksempel en-US) af sproget:


HKEY\_LOCAL\_MACHINESYSTEMCurrentControlSetControlMUISettingsPreferredUILanguages


Denne værdi synes kun at være indstillet på maskiner med flere sprog installeret (og muligvis kun, når en bruger har ændret velkomstskærmens sprog).


Så for at få det nuværende velkomstskærmsprog, synes strømmen at være:



  • Forsøg på at læse PreferredUILanguages ​​

  • Hvis du finder det, skal du analysere et sprog-id

  • Ellers skal du ringe til GetSystemDefaultUILanguage

  • Indlæse de relevante sprogressourcer med det returnerede sprog-id



Det ville ikke være sådan en smerte, hvis vi ikke forsøgte at vise ting på et andet sprog ved opstartstid! Normalt kan du bare bruge GetUserDefaultUILanguage.