0

ini 文件和 getPrivateProfileString 有一个新问题 - 令人沮丧的是他们已经很好地合作了大约 3 年,就在过去的几天里,一些事情让他们吓坏了,而且时不时地它什么也没返回我正在查找的字段。我已经与维护服务器的人员进行了核对,他们所知道的没有任何变化。

我看过这个答案,并尝试从文件中删除 BOM,并在第一行添加一个额外的换行符 - 两者都不起作用。

奇怪的是,它不会每次都使用相同的部分/键组合,也不是所有部分都相同 - 到目前为止,我已经注意到来自 4 个不同部分的键会发生这种情况,而且它通常只会失败我正在加载 1 个键,尽管单次运行最多 3 个(大约 20 个)。我很困惑。

下面是调用 GetPrivateProfileString 的代码:

Private Declare Unicode Function GetPrivateProfileString Lib "kernel32" _
Alias "GetPrivateProfileStringW" (ByVal lpApplicationName As String, _
ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Int32, _
ByVal lpFileName As String) As Int32

Public Overloads Shared Function INIRead(ByVal INIPath As String, _
ByVal SectionName As String, ByVal KeyName As String, _
ByVal DefaultValue As String) As String
        Dim n As Int32
        Dim sData As String
        sData = Space$(1024)
        n = GetPrivateProfileString(SectionName, KeyName, DefaultValue, _
        sData, sData.Length, INIPath)
        If n > 0 Then
            INIRead = sData.Substring(0, n)
        Else
            INIRead = ""
        End If
    End Function

' elsewhere in the code...
Dim db_conn as String
db_conn = INIRead(iniFile, "DATABASE", "SecurityDB")

再说一次,大多数对这项工作的调用,但有些没有,这让我很头疼。谢谢!

4

1 回答 1

0

最后,最终的工作是我们使用服务器名称而不是 DFS 路径(即,\\fileserver01\Software\Config.ini而不是\\customDFSPath\OtherDir\Config.ini)设置 ini 文件的路径。显然他们最近升级到了 Windows Server 2012 R2,有人提到那里的 DFS 系统很慢,这导致了这个问题。

于 2013-11-07T23:00:42.643 回答