如何以不同的文化启动新的非托管进程?

4

我需要从.NET应用程序中使用我选择的区域设置来运行一个新进程。

这个进程将运行一个外部未托管的第三方exe文件。我该如何让它以特定的区域设置运行?

请注意,我不想更改线程的区域设置,可以通过以下方式完成:

System.Treading.Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR")

我不想为新线程设置默认文化(可以通过反射或以下方式完成):

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

我有点怀疑在不将文化名称作为命令行参数传递给其他进程的情况下是否可能实现这一点。(正如您所说,该进程是第三方的,因此不会在此方面进行合作。) - millimoose
是的,那就是问题所在... - taminov
第三方可执行文件是.NET的吗? - Anton Tykhyy
如果您能详细说明“您想要解决什么问题”(您面临哪些问题等),可能会有解决方案或解决方法-只要您足够深入挖掘,一切都有解决方案。 - NSGaga-mostly-inactive
我已经找到了我的特定问题的解决方法。不过,如果有一种方法可以在进程中以某种方式更改第三方本地化,那就很有趣了。 - taminov
根据我丢失了链接的其他SO帖子,只有.NET才真正具有每个线程文化的概念。 - millimoose
1个回答

4
如果可执行文件是.NET应用程序,您可以创建自己的代理可执行文件,根据需要设置文化,并通过反射加载其可执行文件并启动相应的Main方法来“启动”其他应用程序。如果第一次没有自动启动,则可能需要了解配置和程序集加载API才能使所有内容正常工作。

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


很遗憾,这不是一个 .NET 可执行文件。 - taminov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接