访问我的文件操作的拒绝路径,我似乎无法修复

时间:2013-06-17 00:22:34

标签: path infopath2010 readonly

我正在尝试在VB 2010 Express(.Net Framework 4.5)中构建一个简单的例程,该例程从我的每晚db备份文件夹中删除旧文件。每当我尝试将ReadOnly状态设置为false(以确保可以删除)或删除文件时,我会收到“System.ArgumentException:拒绝访问路径”错误。

我已经打了两天并且多次重写代码,但总是有相同的结果。当我查看指定文件的属性时,一切看起来都很完美。

这是属性的图像。 。

<< WOOPS-我很乐意能够在这里发布我的图片来提供帮助,但是新帖子是不可能的。希望这种手动打字就足够了。 >>

_data              {Microsoft.Win32.Win32Native.WIN32_RLE_ATTRIBUTE_DATA}
_datalnitialised    0
Attributes  Archive {32}
CreationTime        #5/17/20131:57:45 AM*
CreationTimeUtc     #5/17/2013 5:57:45 AM#
Directory           {C:\powerhome\Database\dbAutoBaks}
DirectoryName       "C:\powerhome\Database\dbAutoBaks"
DisplayPath         "ph-130517.db"
ERROR_ACCESS_DENIED  5
Exists               True
Extension            ".db"
FullName             "C:\powerhome\Database\dbAutoBaks\ph-130517.db"
FullPath             "C:\powerhome\Database\dbAutoBaks\ph-130517.db"
IsReadOnly           False
LastAccessTime       #5/17/20131:57:45 AM#

这是我的代码。 。

Imports System
Imports System.IO
Imports System.Security.AccessControl

Public Class phFileTrim

Private Sub fileTrim_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim text As String
    Dim UserAccount As String = "Administrators"
    Dim intdays As Integer = 30
    Dim folderPath As String = "C:\powerhome\Database\dbAutoBaks"
    Dim fi As IO.FileInfo = New IO.FileInfo(folderPath)

    'Check out System.IO.FileInfo Class tutorial

    For Each fi In New IO.DirectoryInfo(folderPath).GetFiles("*.*")
        Try
            fi.IsReadOnly = False
            If fi.Exists Then
                If (Now - fi.CreationTime).Days > intdays Then fi.Delete()
            End If
        Catch ex As Exception
            text = "File Delete Failed: " & ex.ToString
            MsgBox(text)
        End Try
    Next
    Me.Close()
End Sub
End Class

错误由 FileInfo.IsReadOnly = False FileInfo.Delete()操作

查看变量的调试属性弹出窗口,我看到“fi”似乎是个问题。定义后对它的所有使用似乎都有拒绝访问= 5错误。因此怀疑我已经错误地形成了“Dim fi As IO.FileInfo = New IO.FileInfo(folderPath)”语句。

任何想法都会非常感激。看起来这不应该是火箭科学,但我肯定会遗漏一些东西。

==星期一上午===

我只是简化了所有内容并将复杂的“Dim fi As IO.FileInfo = New IO.FileInfo(folderPath)”更改为。 。

 Dim fi As New FileInfo("C:\powerhome\Database\dbAutoBaks\ph-130517.db")

这是存在的特定文件的完全限定路径,但当fi为Dimensioned时,我仍然会收到访问错误。

该文件与VB代码在同一台计算机上,但我在调试时遇到此错误。我还没有尝试过运行这个程序的可执行文件。它将在执行时位于powerhome目录中。

==星期一上午9点​​=== 即使这个简单的代码也会抛出一个ACCESS_DENIED错误5.(这是来自MSDN官方库的例子!)

Imports System
Imports System.IO

Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)  Handles MyBase.Load
    Dim path1 As String = Path.GetTempFileName()
    Dim finfo As FileInfo = New FileInfo(path1)
End Sub
End Class

我确保我的app.manifest执行级别设置为。 。

 <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

但仍然没有成功。

世界上有什么阻止我的文件访问?

: - (

1 个答案:

答案 0 :(得分:1)

问题解决了。

我执行第一个“fi”代码时收到的“ERROR_ACCESS_DENIED 5”属性,根本不是错误。显然,ERROR_ACCESS_DENIED是'fi'对象的属性,就像IsReadOnly一样。 “5”表示“一切都很好”。

当我第一次开始调试我的例程并在我的fi维度上遇到严重错误时,我看到了ACCESS_ERROR并认为这是问题所在。

在接下来的几天调试中,我一直试图摆脱ACCESS_ERROR而不检查我的代码是否真的没问题。

在某个地方,我的代码变得没有错误,我从未发现,直到另一个程序员提出了一些他知道有用的试用代码,我仍然遇到了ACCESS_ERROR。

他指出这不是一个真正的错误,当我尝试我的代码时,它工作得很好(但仍然使用ERROR_ACCESS_DENIED值为5,这没关系)。

我从未在MSDN文档中找到任何指示ACCESS_ERROR值的内容。值5被列在一个文档中,我认为这是一个错误值,显然它不是。