C# 如何启动具有不同区域性的新非托管流程?

C# 如何启动具有不同区域性的新非托管流程?,c#,process,globalization,cultureinfo,C#,Process,Globalization,Cultureinfo,我需要从.NET应用程序运行一个具有我选择的区域性的新进程。 此进程将运行外部非托管第三方exe。 我如何让它在特定的文化中运行 请注意,我不想更改线程的区域性,可以这样做: System.Treading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR") 我不想为新线程设置默认区域性,这可以通过反射或: CultureInfo.DefaultThreadCurrentUICulture = new CultureIn

我需要从.NET应用程序运行一个具有我选择的区域性的新进程。 此进程将运行外部非托管第三方exe。 我如何让它在特定的文化中运行

请注意,我不想更改线程的区域性,可以这样做:

System.Treading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")
我不想为新线程设置默认区域性,这可以通过反射或:

CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("fr-FR")

如果可执行文件是.Net应用程序,则您可以创建自己的代理可执行文件,以您想要的方式设置区域性,并通过反射加载其他应用程序的可执行文件并启动相应的Main方法来“启动”其他应用程序。您可能需要了解配置和程序集加载API,以便在第一次尝试时无法神奇地启动所有API时正常工作


对于本机应用程序,恐怕您需要更改区域设置或某些应用程序自己的配置。

我怀疑,如果不将区域性名称作为命令行参数传递给其他进程,这是不可能的。(正如你所说,这是第三方,因此不会合作。)是的,这就是问题所在……第三方可执行文件是.NET吗?如果你能详细说明“你想解决什么问题”(你面临什么问题等)——可能有解决方案或变通办法——如果你挖掘得足够深入,一切都有解决方案;我已经为我的特殊问题找到了解决办法。尽管如此,如果有一种方法可以改变第三方的本地化,这还是很有趣的。不幸的是,不是.NET exe。