调用GetPrivateProfileString后无法删除INI文件

时间:2013-07-26 06:09:49

标签: vb.net ini

调用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',因为它正被另一个人使用过程

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

由于

1 个答案:

答案 0 :(得分:0)

  

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

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

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

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

修改

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