2

调用 GetPrivateProfileString 命令后,我无法删除文件。我有以下代码:

               'Read the INI File
                sb = New StringBuilder(500)
                Select Case FileType
                    Case "Scanner File"
                        res = GetPrivateProfileString("ScannerSetings", "ScannerType", "", sb, sb.Capacity, Filename)
                    Case "Scale File"
                        res = GetPrivateProfileString("ScaleSetings", "ScaleType", "", sb, sb.Capacity, Filename)
                End Select

                'If the result is a value store it, otherwise move it to unprocessed
                If res <> 0 Then InputArray.Add(sb.ToString)

                File.Delete(Filename)

从 INI 文件中读取详细信息后,当我尝试删除该文件时,我收到以下错误:该进程无法访问文件“R:\Drop\011_11_Scanner”,因为它正在被另一个进程使用。

在退出应用程序之前,我什至无法手动删除这些文件。任何帮助,将不胜感激。

谢谢

4

1 回答 1

0

在退出应用程序之前,我什至无法手动删除这些文件。

这清楚地表明Filename指向的文件被锁定。只要它被锁定,您就无法删除它。

检查您的代码是否有您已打开(例如,出于写作目的)但未关闭的任何文件句柄。

如果您在打开文件后不关闭文件,则该文件不会被释放并保持锁定状态......这实际上意味着它不能被删除,直到(a)您关闭该文件句柄,或(b)您关闭你的程序,因为那是打开后持有文件句柄的东西。

编辑

接下来想到的是 VB.NET 可能需要特殊的用户访问权限才能删除最新 Windows 版本上的 INI。您可以通过简单地使用提升的用户权限执行您的应用程序(例如通过右键菜单;以管理员身份运行)来快速交叉检查。我无法想象这实际上是问题所在——但值得一试。如果确实是问题所在,请检查(并修改)您的应用程序和/或 INI 所在文件夹的权限。

于 2013-07-26T06:17:12.183 回答