是否可以在运行时设置Windows程序的语言或语言环境?

我们有一些现有的软件(C ++ Windows应用程序),它们的资源已经被各种客户翻译成多种语言。 应用程序从Windows语言环境中选取语言环境,并以适当的语言运行。

根据最近的订单,我们把资源翻译成德文,但是我们刚刚发现客户正在用英文安装Windows,但是希望我们的软件仍然使用德文。 显然,PC上运行的其他软件还没有全球化,只有德文。

在Windows中有什么方法可以重写语言环境,以便软件相信它是在德语安装的Windows上运行的吗? 我们现在没有时间去修改软件来覆盖区域,而且也不愿意为这个客户分配应用程序。

有什么build议么?

我不知道任何直接的方式,不涉及改变你的程序,但我可以提供一个解决方法:

在运行应用程序的机器上,创建另一个用户,并将该用户的语言环境设置为德语。 然后,让你的程序运行该用户的凭据(使用runas或psexec)。 然后程序将运行在德语区域,而用户将继续在英语环境下工作。 但是,如果用户试图保存或打开文件,这将会很烦人 – 桌面和文档文件夹将是德国用户的文件夹,而不是英文的文件夹。

是的,您可以使用WinMain中的win32调用SetThreadLocale或应用程序的入口点。 任何子线程都将继承父语言环境。 详情在这里:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd374051%28v=vs.85%29.aspx