阅读以下内容:
控制面板 - >区域和设置 - >格式 - >其他设置 - >数字 - >列表分隔符
我用过:
winform / wpf应用程序中的System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator。它给了我正确的列表分隔符。我可以用于CSV文件操作。
但是我在窗口服务中没有使用相同的代码行。它根据文化提供默认分隔符。
如何获得正确的列表分隔符?
当我们以csv格式保存文件时,Excel使用相同的分隔符(在控制面板区域设置中)。
提前致谢。
答案 0 :(得分:0)
您注意到的行为是正确的。这是因为区域设置是每个用户。这意味着每个用户可以独立于其他用户使用自己的区域设置。毕竟,这是一个偏好问题。这是有道理的。
但是,很可能,您的Windows服务作为本地系统(或其他一些服务帐户)运行,而后者又有自己的设置。通过提供将当前用户设置复制到系统帐户的选项,Windows可以轻松更改本地系统区域设置。
编辑: 您必须先查找当前登录的用户。请参阅HERE中以下类中的GetCurrentUsername()方法。 代码并非完全由我编写,我前段时间自己选择了它并对其进行了一些修改,其中包括GetCurrentUsername()方法。
此外,一旦获得用户名,您将继续查找用户的SID,如以下问题的接受答案所述:Convert a username to a SID string in C#/.NET
一旦得到它,只需从注册表值sList
中读取列表分隔符,取消以下密钥:
[HKEY_USERS\SID-YOU-JUST-FOUND\Control Panel\International]