为啥 VB6 MkDir 命令在其他机器上抛出错误 75 而在我的机器上却没有?

Posted

技术标签:

【中文标题】为啥 VB6 MkDir 命令在其他机器上抛出错误 75 而在我的机器上却没有?【英文标题】:Why does VB6 MkDir command throw error 75 on other machines but not on mine?为什么 VB6 MkDir 命令在其他机器上抛出错误 75 而在我的机器上却没有? 【发布时间】:2011-04-16 20:36:50 【问题描述】:

我的 VB6 程序在首先确认该文件夹不存在后使用 Mkdir 创建一个文件夹,使用这个再简单不过的代码:

If LenB(Dir$(ImportFolder & "\" & UuidPartOfImportFolderName, vbDirectory)) = 0 Then
  MkDir ImportFolder & "\" & sIECommon2.gstrUniqueImportUuid
End If

当我在自己的开发环境中,从 IDE 内部运行此代码,甚至在本地计算机上运行 .exe 时,它​​都运行良好——文件夹按预期创建,然后其他文件在其中成功创建.

但是当我构建可执行文件并将其安装在另一台机器上时,Mkdir 命令会抛出错误“错误 75:路径/文件访问错误”。 (我通过在它之前和之后放置一个 MsgBox 命令来将其缩小到这个命令——之前的会显示,但之后的不会。)

根据我的研究,使用 Mkdir 创建的文件夹的默认权限是每个人的 rwx ...那么为什么它会在其他机器上而不是我的机器上引发错误?

或者它可能与它运行的机器无关——我只是没有其他理论。另一个奇怪的是,这个程序已经在其他地方使用 MkDir 多年了;我刚刚在添加其他功能时添加了这个新功能。

谢谢您-期待您的回复。

【问题讨论】:

除非您告诉我们 ImportFolder 是什么,否则很难说。但是,我不知道您从哪里得到制作文件夹的想法,将其安全性设置为除了其父文件夹作为子对象的继承安全性之外的任何内容。例如,许多“常见”特殊文件夹具有所有者安全性。 ImportFolder 为:C:\Documents and Settings\Username\Application Data\CompanyName\ProductName\Import 如果新创建的文件夹上的安全性是从父级继承的,那就没问题了,因为它在用户的配置文件中。然而运行这个程序的用户却得到了错误。 您正在检查FolderX,但创建了可能已经预设的FolderY。还要确保父文件夹存在 (C:\...\ProductName\Import) 你在两台机器上运行什么操作系统?我敢打赌,它运行的那个运行的是 Windows XP,而它不运行的那个运行的是 Vista 或 7。 【参考方案1】:

我怀疑 WQW 的答案是正在发生的事情,但是,您可能想要验证两台机器是否运行相同版本的 VB6 运行时 (MSVBVM6.dll)。有几个版本。这是一个长远的目标,但一个人的行为可能与另一个人略有不同。

但我还是有点怀疑,我怀疑您使用的两个文件夹名称并不完全相同。

【讨论】:

我们终于解决了这个问题,将 MkDir 的使用替换为:Dim objDir As New Scripting.FileSystemObject objDir.CreateFolder ImportFolder & "\" & UuidPartOfImportFolderName 谢谢大家的回复。

以上是关于为啥 VB6 MkDir 命令在其他机器上抛出错误 75 而在我的机器上却没有?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 FileSystemXmlApplicationContext 在存在的文件上抛出 FileNotFoundException

glCreateShader 在 OSX 上抛出异常,为啥?

为啥 Integer.parseInt 在看起来有效的输入上抛出 NumberFormatException?

Babel 在箭头函数上抛出语法错误

为啥要尝试在已检查的异常上抛出未检查的异常? [复制]

为啥 SKProductsRequestDelegate/SKRequestDelegate didFailWithError 在 NSError 上抛出 EXC_BAD_ACCESS?