首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在不访问源代码的情况下检查.NET应用程序在哪种语言环境下运行?

如何在不访问源代码的情况下检查.NET应用程序在哪种语言环境下运行?
EN

Stack Overflow用户
提问于 2008-09-12 13:47:34
回答 5查看 2.6K关注 0票数 0

上下文:我负责运行一个用.NET编写的服务。专有应用。它使用SQL Server数据库。它以本地计算机中Administrators组的用户成员身份运行。在我将机器添加到域之前,它工作得很好。

因此,我将该计算机添加到一个域(Win 2003)中,并将用户更改为Power Users组的成员,现在,

问题:它试图执行的一些SQL语句在西班牙语本地化中是“神奇的”(其中,分隔浮点数而不是.),导致错误。

INSERT语句中的列数少于values子句中指定的值。values子句中的值数必须与INSERT语句中指定的列数匹配。在System.Data.SqlClient.SqlConnection.OnError(SqlException异常时,布尔型breakConnection)

机器中的操作系统和区域设置为英文。我问了应用程序的提供商,他说:

看起来像是在西班牙语环境下运行的代码和在英语环境下运行的SQL server代码的组合。因此SQL需要'15.28‘而不是'15,28’

在我看来,这在不同级别上都是错误的( SQL Server如何区分用于分隔参数的逗号和属于浮点数的逗号?)。

因此,代码似乎从某个地方抓取了西班牙语区域设置,我不知道它是以用户身份运行的,还是在其他地方(可能是全局策略?)。但问题是

哪些地方的本地化是以机器/用户/域为基础定义的?

我不知道所有的地方我必须寻找罪魁祸首,所以请帮我找到它!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-12 14:02:34

在.NET中有两种类型的本地化,两种区域性的设置都可以在这些变量中找到(在机器上启动.NET命令行应用程序来查看它说了什么):

System.Thread.CurrentThread.CurrentCulture和System.Thread.CurrentThread.CurrentUICulture

http://msdn.microsoft.com/en-us/library/system.threading.thread_members.aspx

它们与控制面板(区域设置部分)中的设置相关。创建一个.NET命令行应用程序,然后在上面的属性上调用ToString(),这应该会告诉你要查看哪个属性。

编辑:

结果是每个用户的区域设置保存在这里:

代码语言:javascript
复制
HKEY_CURRENT_USER\Control Panel\International

可能有必要检查用户的注册表,并将其与设置为美国或您需要的任何区域设置的用户进行比较。

票数 3
EN

Stack Overflow用户

发布于 2008-09-12 14:02:27

您可以在执行代码的线程上下文中设置它。

System.Threading.Thread.CurrentThread.CurrentCulture

票数 1
EN

Stack Overflow用户

发布于 2008-09-12 14:21:35

太棒了,我创建了控制台应用程序,实际上,这个应用程序并不疯狂,CurrentCulture是西班牙语的,但只针对机器上的用户。如果我以另一个用户的身份运行控制台应用程序,它将返回所有区域性的英语。

我是否应该打开一个新问题,询问用户的区域设置在哪里?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档