VB6 Dir("*.dot") 在一台服务器上查找 .dotx 而在另一台服务器上找不到

VB6 Dir("*.dot") globbing finding .dotx on one server but not the other

我有一个非常奇怪的问题,我希望其他人可能知道。

我有一个包含以下代码的 VB6

Dim filename As String: filename = Dir("c:\somepath\*.dot")

Do Until filename = ""
    ...add filename to listbox

    filename = Dir()
loop

当我 运行 在一个 Windows 服务器 2012 R2(称之为服务器 A)上使用完全相同的程序时,Dir() 将 return 仅以 .dot 结尾的文件。

在另一个 Windows Server 2012 R2(服务器 B)上,Dir() 将另外 return 以 .dotx[=11= 结尾的文件]

两台服务器都装有 Microsoft Office 2013 标准版。两台服务器在文件资源管理器中的 AFAICS 设置相同。

服务器语言环境为英语 服务器 B 语言环境是丹麦语

是否有任何注册表设置可以使文件通配行为像这样?我在特别考虑 DOTX 是新的 Office 模板格式吗?

我运行遇到了类似的问题。由于无法控制我 运行 我的应用程序所在的每台机器上的设置,因此在我的代码中处理它会更容易。我使用 FileSystemObject 来迭代文件夹中的文件,并将文件的扩展名与我要过滤的扩展名进行比较。使用 Dir() 过滤更可靠。

Public Sub ShowFileList(folderToSearch As String, extensionToFind As String)
    Dim oFileSystemObject As New FileSystemObject
    Dim oFiles As Files
    Dim oFile As File
    Dim fileName As String
    Dim fileExtension As String

    Set oFiles = oFileSystemObject.GetFolder(folderToSearch).Files

    For Each oFile In oFiles
        fileName = oFile.Name
        fileExtension = oFileSystemObject.GetExtensionName(fileName)

        If StrComp(fileExtension, extensionToFind, vbTextCompare) = 0 Then
            Debug.Print fileName
        End If
    Next oFile

    Set oFile = Nothing
    Set oFiles = Nothing
    Set oFileSystemObject = Nothing
End Sub

Private Sub Command1_Click()
    ShowFileList "C:\MyFolder", "dot"
End Sub

如果在未列出 .docx 文件的计算机的文件系统上禁用 8.3 文件名的创建,就会出现您所看到的情况。

您可以通过反转指令使用 fsutil 重新启用此功能 here